UVA 208 Firetruck
来源:互联网 发布:网络项目传销名单 编辑:程序博客网 时间:2024/06/03 02:46
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19858
题意:给一个无向图,起点为1,终点为k,按照字典序输出所有可行路径。
思路:可以先用floyd判断一下图的连通性,对于那些不能到达目标的点,我们一开始就排除掉,然后就用dfs+回溯搜索一下即可。
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <cstdlib>#include <iostream>#include <algorithm>#include <stack>#include <map>#include <set>#include <vector>#include <sstream>#include <queue>#include <utility>using namespace std;#define rep(i,j,k) for (int i=j;i<=k;i++)#define Rrep(i,j,k) for (int i=j;i>=k;i--)#define Clean(x,y) memset(x,y,sizeof(x))#define LL long long#define ULL unsigned long long#define inf 0x7fffffff#define mod %100000007#define mp make_pair#define fi first#define se second#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define mid int m=(l+r)>>1bool b[30][30];int aim;int T = 0;int a[30][30];bool flag[30];int tx,ty;int ans;int m;int out[30];void dfs(int x,int k){ if ( x == aim ) { ans++; rep(i,1,k) printf("%d%c",out[i],(i==k)?'\n':' '); return; } rep(i,1,m) if ( flag[i] && a[x][i] ) { flag[i] = false; out[k+1] = i; dfs(i,k+1); flag[i] = true; }}int main(){ while(cin>>aim) { //if ( T++ ) puts(""); printf("CASE %d:\n",++T); m = 1; Clean(a,false); Clean(b,false); Clean(flag,true); ans = 0; while(~scanf("%d%d",&tx,&ty)) { m = max( m , max(tx,ty) ); if ( tx + ty == 0 ) break; a[tx][ty] = true; a[ty][tx] = true; b[ty][tx] = true; b[tx][ty] = true; } rep(i,1,m) rep(j,1,m) rep(k,1,m) if ( b[i][k] && b[k][j] ) b[i][j] = true; rep(i,1,m) if ( !b[i][aim] && i!=aim ) flag[i] = false; flag[1] = false; out[1] = 1; dfs(1,1); printf("There are %d routes from the firestation to streetcorner %d.\n",ans,aim); } return 0;}
0 0
- uva 208 - Firetruck
- uva 208 - Firetruck
- uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 Firetruck
- uva 208 Firetruck
- uva 208 Firetruck
- UVa:208 Firetruck
- UVa 208 - Firetruck
- Uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA - 208 Firetruck
- uva 208 Firetruck
- UVA - 208 Firetruck
- tomcat 配置环境变量
- Svn+Apache服务器搭建指南
- WindowsOptionalFeature 与 WindowsFeature
- 用布尔型输出从0到一个数中间被三整除的数
- poj 1001 Exponentiation(大数)
- UVA 208 Firetruck
- hadoop生态系统学习之路(五)hbase的简单使用
- 关于HashMap的ContainsKey()
- Code resource ✵1
- 解决Attribute "rippleColor" has already been defined的问题
- leetcode_154 Find Minimum in Rotated Sorted Array II
- ZOJ 2736 Daffodil number
- 【bzoj2022】弹飞绵羊
- python疑难杂症