POJ_1094_Sorting It All Out(拓扑排序)
原题目链接
/*
在循环里面调用toposort是因为如果输入中已经出现环,立即输出。
*/
1 /* 2 在循环里面调用toposort是因为如果输入中已经出现环,立即输出。 3 */ 4 # include <cstdio> 5 # include <cstring> 6 # include <iostream> 7 using namespace std; 8 # define MAX 500 9 int n,m,top,mark; //top保存输出数据的个数,mark用于记录字母。 10 int G[MAX][MAX],v[MAX]; //G用于记录边的信息,有向图。 11 int q[MAX]; //用于保存拓扑排序的数据。 12 int indegree[MAX]; //保存点的度数。 13 int toposort() 14 { 15 int deg[MAX],k,cnt; 16 int flag=1; 17 top=0; 18 memcpy(deg,indegree,sizeof(deg)); // 复制一份,不能使用indegree。因为可能toposort要调用多次。 19 for(int i=0;i<n;i++) 20 { 21 cnt=0; //记录最高的度数 22 for(k=0;k<n;k++) 23 if(de