首页 > 其他 > 详细

1146 Topological Order

时间:2020-03-14 16:34:57      阅读:54      评论:0      收藏:0      [点我收藏+]

 大致题意就是给出一个有向图,和K个拓扑排序序列,判断拓扑排序序列是否正确,不正确就输出序列的编号。。。

 技术分享图片

 拓扑排序序列,永远记住入度为0的顶点先入队列。

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 
 5 int main() {
 6     int n,m,u,v,k,num = 0;
 7     cin>>n>>m;
 8     vector<int> G[1010],indegree(n+1),temp(n+1),ans;
 9     for(int i = 0; i < m; ++i) {
10         cin>>u>>v;
11         G[u].push_back(v);
12         temp[v]++;
13     }
14     cin>>k;
15     for(int i = 0; i < k; ++i) {
16         int flag = 0;
17         indegree = temp;
18         for(int j = 0; j < n; ++j) {
19             scanf("%d",&u);
20             if(indegree[u] != 0) flag = 1;
21             for(auto v:G[u]) indegree[v]--;//把从u出发的所有边的终点v的入度减一
22         }
23         if(flag == 0) continue;
24         ans.push_back(i);
25     }
26     for(int i = 0; i < ans.size(); ++i) {
27         if(i > 0) printf(" ");
28         printf("%d",ans[i]);
29     }
30     return 0;
31 }

技术分享图片

 

1146 Topological Order

原文:https://www.cnblogs.com/keep23456/p/12492726.html

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