poj 4084:拓扑排序

#include<iostream>
#include<cstring>
using namespace std;

struct node
{
	int farNum;
	int sonNum;
	int son[110];	
};
node v[110];

bool visit[110] = {0};

int main()
{
	int m,n;
	cin>>m>>n;
	int p,q;
	memset(v,0,sizeof(v));
	for(int i=1;i<=n;i++)
	{
		cin>>p>>q;
		v[p].son[v[p].sonNum] = q;
		v[p].sonNum ++;
		v[q].farNum ++;
	}
	int cNum = 0;
	while(cNum<m)
	{
		for(int i=1;i<=m;i++)
			if(v[i].farNum == 0 && !visit[i])
			{
				cout<<"v"<<i<<" ";
				visit[i] = true;
				for(int j=0;j<v[i].sonNum;j++)
					v[v[i].son[j]].farNum--;
				cNum ++;
				break;
			}
	}
	cout<<endl;
	return 0;
}

    原文作者:拓扑排序
    原文地址: https://blog.csdn.net/u010663294/article/details/37530663
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞