poj1094 拓扑排序

 
  
 
  
拓扑排序的应用:
1、当前的输入序列排序唯一,则输出 Sorted sequence determined after %d relations
2、当前输入序列不唯一,检查是否有环
3、全部输入后,若排序唯一和有环,输出1、2,否则输出 Sorted sequence cannot be determined
拓扑排序 每次选点入度为0的点唯一 则排序唯一
否则排序结果不唯一
若某次选择点,不存在入度为0的点,则有环

 
  
#include 
#include 
int topo(int succ[][26],int *inp,int *outp,int n,int *numbersucc,int *result)
{
	int in[26],out[26];
	int i,j,firstnode,cnt,k=0,tempnode;
	bool isonly = true;
	for (i=0;i1)
					isonly = false ; //在排序的过程中有一次入度为0 的点 不唯一排序不唯一
			}
		}
		if (cnt==0) //没有入度为0的点 说明存在环
			return 2;
		*(result+k) = firstnode;
		in[firstnode] = -1; //已排好 
		k++; //k代表已经排好序的数量
		if (k==n)
			break;
		for (i=0;i=0;j--)
							printf("%c",result[j]+'A');
						printf(".\n");
					}
					else if (flag == 2)
					{
						printf("Inconsistency found after %d relations.\n",i);
					}
				}
			}
		}
		if (flag == 0)
			printf("Sorted sequence cannot be determined.\n");
	}
	return 0;
}


 
 

你可能感兴趣的:(算法)