poj 2367 Genealogical tree

来源:互联网 发布:parsley.js 手册 编辑:程序博客网 时间:2024/05/17 01:32

裸的拓扑排序。

#include <iostream>#include<stdio.h>#include<cstring>#include<vector>using namespace std;vector<int>a[105];int from[105],to[105],flag[105];//出度,入度,标记是否访问过int main(){   int n,temp;   scanf("%d",&n);   memset(from,0,sizeof(from));   memset(to,0,sizeof(to));   memset(flag,0,sizeof(flag));   for(int i=1;i<=n;i++){     while(scanf("%d",&temp),temp){       a[i].push_back(temp);       from[i]++;       to[temp]++;     }   }   int count=0;   while(count!=n){     for(int i=1;i<=n;i++){       if(to[i]==0&&flag[i]==0){         count++;       printf("%d ",i);       flag[i]=1;       int len=a[i].size();         for(int j=0;j<len;j++){        to[a[i][j]]--;         }       }     }   }   printf("\n");    return 0;}