Firetruck UVA - 208

怎么输出路径?用DFS,因为递归是出栈和入栈的过程。这道题长知识了!

为了按字典序输出,所以对邻接表进行一次排序!

并查集也是预处理,某个点和终点不在同一个集合中时,就不处理!

复制代码
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<vector>
 6 using namespace std;
 7 
 8 const int maxn=1000;
 9 vector<int> G[maxn];
10 
11 int en,last,ans;
12 int way[21],Fa[21],vis[21];
13 
14 int Find(int x){
15     if(x!=Fa[x]) Fa[x]=Find(Fa[x]);
16     return Fa[x];
17 }
18 
19 void Union(int a,int b){
20     int x=Find(a),y=Find(b);
21     if(x==y) return;
22     else Fa[x]=y; 
23 }
24 
25 void DFS(int x,int cnt)                   //  good
26 {    
27     if(x==en){
28         cout<<1;
29         for(int i=1;i<cnt;i++) printf(" %d",way[i]);
30         puts("");   //等价于 cout<<endl;
31         ans++;
32     }
33     for(int i=0;i<G[x].size();i++){
34         if(vis[G[x][i]]&&Find(G[x][i])==last){
35             vis[G[x][i]]=false;
36             way[cnt]=G[x][i];
37             DFS(G[x][i],cnt+1);
38             vis[G[x][i]]=true;
39         }
40     }
41 }
42 
43 int main()
44 {   int cases=0;
45     while(cin>>en){
46         int x,y;
47         for(int i=1;i<=21;i++) Fa[i]=i;
48         for(int i=1;i<=21;i++) G[i].clear();    //不要忘了! 
49         while(~scanf("%d%d",&x,&y)){
50             if(x==0&&y==0) break;
51             G[x].push_back(y);
52             G[y].push_back(x);
53             Union(x,y);
54         }
55         
56         printf("CASE %d:\n",++cases);
57         for(int i=1;i<=21;i++) sort(G[i].begin(),G[i].end());   // key point!!!! 
58         memset(vis,true,sizeof(vis));
59         ans=0;
60         way[1]=1;
61         vis[1]=false;
62         last=Find(en);
63         
64         if(Find(1)==last) DFS(1,1);
65         printf("There are %d routes from the firestation to streetcorner %d.\n",ans,en); 
66     }
67     return 0;
68 }
复制代码

 

posted @   天之道,利而不害  阅读(243)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· 程序员常用高效实用工具推荐,办公效率提升利器!
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 【译】WinForms:分析一下(我用 Visual Basic 写的)
点击右上角即可分享
微信分享提示