4084:拓扑排序
-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前。
输入
-
若干行整数,第一行有2个数,分别为顶点数v和弧数a,接下来有a行,每一行有2个数,分别是该条弧所关联的两个顶点编号。
v<=100, a<=500
输出
- 若干个空格隔开的顶点构成的序列(用小写字母)。 样例输入
-
6 8 1 2 1 3 1 4 3 2 3 5 4 5 6 4 6 5
样例输出
-
v1 v3 v2 v6 v4 v5
- 查看
- 提交
- 统计
- 提示
- 提问
-
- 代码:
#include<cstdio> #include<vector> using namespace std; vector<int> g[105]; bool vis[105]; int in[105],v,a,from,to; int main(){ scanf("%d%d",&v,&a); while(a--){ scanf("%d%d",&from,&to); g[from].push_back(to); in[to]++; } int cnt = 0; while(cnt < v){ for(int i =1;i<=v;i++){ if(in[i]==0&&!vis[i]){ printf("v%d ",i); vis[i] = 1; cnt++; for(size_t j=0;j<g[i].size();j++){ in[g[i][j]]--; } break; } } } printf("\n"); return 0; }