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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章