UVA 208 - Firetruck
2013-02-07 14:01
579 查看
#include<cstdio>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int n,counts,path[300],p[30],vis[30];
vector<int>map[30];
int init_dfs(int u)
{
p[u] = 1;
for(int i = 0; i < map[u].size(); i++)
{
int v = map[u][i];
if(!p[v])
init_dfs(v);
}
}
int dfs(int cur)
{
if(path[cur-1]==n)
{
printf("%d",path[0]);
for(int i = 1; i < cur; i++)
printf(" %d",path[i]);
printf("\n");
counts++;
return 0;
}
else for(int i = 0; i < map[path[cur-1]].size(); i++)
{
int v = map[path[cur-1]][i];
if(!vis[v]&&p[v])
{
path[cur] = v;
vis[v] = 1;
dfs(cur+1);
vis[v] = 0;
}
}
}
int main()
{
int a,b,kc=0;
while(scanf("%d",&n)==1)
{
for(int i = 0; i < 30; i++) map[i].clear();
memset(vis,0,sizeof(vis));
memset(p,0,sizeof(p));
for(;;)
{
scanf("%d %d",&a,&b);
if(!a&&!b) break;
map[a].push_back(b);
map[b].push_back(a);
}
for(int i = 0; i < 30; i++) sort(map[i].begin(), map[i].end());
printf("CASE %d:\n",++kc);
counts=0;
init_dfs(n);
path[0]=1;
vis[1]=1;
dfs(1);
printf("There are %d routes from the firestation to streetcorner %d.\n",counts,n);
}
return 0;
}
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
int n,counts,path[300],p[30],vis[30];
vector<int>map[30];
int init_dfs(int u)
{
p[u] = 1;
for(int i = 0; i < map[u].size(); i++)
{
int v = map[u][i];
if(!p[v])
init_dfs(v);
}
}
int dfs(int cur)
{
if(path[cur-1]==n)
{
printf("%d",path[0]);
for(int i = 1; i < cur; i++)
printf(" %d",path[i]);
printf("\n");
counts++;
return 0;
}
else for(int i = 0; i < map[path[cur-1]].size(); i++)
{
int v = map[path[cur-1]][i];
if(!vis[v]&&p[v])
{
path[cur] = v;
vis[v] = 1;
dfs(cur+1);
vis[v] = 0;
}
}
}
int main()
{
int a,b,kc=0;
while(scanf("%d",&n)==1)
{
for(int i = 0; i < 30; i++) map[i].clear();
memset(vis,0,sizeof(vis));
memset(p,0,sizeof(p));
for(;;)
{
scanf("%d %d",&a,&b);
if(!a&&!b) break;
map[a].push_back(b);
map[b].push_back(a);
}
for(int i = 0; i < 30; i++) sort(map[i].begin(), map[i].end());
printf("CASE %d:\n",++kc);
counts=0;
init_dfs(n);
path[0]=1;
vis[1]=1;
dfs(1);
printf("There are %d routes from the firestation to streetcorner %d.\n",counts,n);
}
return 0;
}
相关文章推荐
- UVa #208 Firetruck (习题7-1)
- UVa 208 - Firetruck 回溯+剪枝 数据
- UVa 208 - Firetruck(DFS判连通+回溯)
- UVA - 208 Firetruck(回溯)
- uva208 - Firetruck
- 双向搜索(UVA 208 Firetruck)
- Uva208 Firetruck【dfs】【习题7-1】
- UVa 208 - Firetruck
- UVa 208:Firetruck(DFS)
- UVA 208 Firetruck
- uva 208 Firetruck (需要预先处理 再dfs,TLE是此题AC常规步骤……)
- UVA 208 Firetruck
- uva208 - Firetruck
- uva 208 - Firetruck
- Firetruck UVA - 208
- uva 208 Firetruck (回溯)
- UVA 208 Firetruck(DFS)
- UVA 208 - Firetruck
- UVA - 208 Firetruck(floyd+DFS)
- UVA 208 Firetruck