首页 > 编程语言 > 详细

uva 10305 拓扑排序裸题

时间:2017-10-06 15:47:24      阅读:251      评论:0      收藏:0      [点我收藏+]

https://vjudge.net/problem/UVA-10305

     目前没学dfs做法,用的队列做法,每次找到一个入度为零的点出队后更新其他点,再加入入度为零的点直到查找完毕,这个题目显然一定有解不必考虑无解的情况。

   

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int in[105];
 4 bool e[105][105];
 5 int main()
 6 {
 7     int n,m,i,j,k;
 8     while(cin>>n>>m&&(n||m)){j=0;
 9         queue<int>q;
10         memset(in,0,sizeof(in));
11         memset(e,0,sizeof(e));
12         int a,b;
13         for(i=1;i<=m;++i)
14         {
15             cin>>a>>b;
16             e[a][b]=1;
17             in[b]++;
18         }
19         for(i=1;i<=n;++i)
20         {
21             if(in[i]==0) q.push(i);
22         }
23         while(!q.empty()){
24             int u=q.front();q.pop();
25             if(j==0) {j++;cout<<u;}
26             else cout<< <<u;
27             for(i=1;i<=n;++i)
28             {
29                 if(e[u][i]){
30                     in[i]--;
31                     if(in[i]==0){
32                         q.push(i);
33                     }
34                 }
35             }
36         }puts("");
37     }
38     return 0;
39 }

 

uva 10305 拓扑排序裸题

原文:http://www.cnblogs.com/zzqc/p/7631601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!