1. 程式人生 > >POJ2367【拓撲排序】

POJ2367【拓撲排序】

很裸的拓撲排序~

//#include <bits/stdc++.h>
#include<iostream>
#include<string.h>
#include<cstdio>
#include<algorithm>
using namespace std;

typedef __int64 LL;

const int N=1e2+10;
int ma[N][N];
int pre[N];
int n;

void tuopu()
{
    int k;
    int flag=0;
    for(int i=1;i<=n;i++)
    {
        k=0
; for(int j=1;j<=n;j++) { if(!pre[j]) { pre[j]=-1; if(flag) printf(" "); printf("%d",j); flag=1; k=j; break; } } if(!k) break
; for(int j=1;j<=n;j++) { if(pre[j]!=-1&&ma[k][j]) { pre[j]--; } } } } int main() { scanf("%d",&n); memset(ma,0,sizeof(ma)); memset(pre,0,sizeof(pre)); for(int i=1;i<=n;i++) { while
(1) { int x; scanf("%d",&x); if(!x) break; ma[i][x]=1; pre[x]++; } } tuopu(); return 0; }