给出一个图的结构,输出其拓扑排序序列,要求在同等条件下,编号小的顶点在前。
输入 若干行整数,第一行有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; }