纯拓扑排序,稍加改良时间。

来源:互联网 发布:linux下日志管理系统 编辑:程序博客网 时间:2024/06/07 10:45



#include<bits/stdc++.h>using namespace std;#define LL long long#define INF 99999999#define put() puts("***********")const int N = 2e3+10;int du[N];int a[N][N];vector<int>vec[N];queue<int>Q;int main(){    int n;    cin>>n;    for(int i=1;i<=n;i++){        int t;        cin>>t;        for(int j=1;j<=t;j++){            int d;            scanf("%d",&d);            vec[d].push_back(i);            //a[d][i]=1;            du[i]++;        }    }    for(int i=1;i<=n;i++){        if(du[i]==0){            Q.push(i);        }    }    for(int i=1;i<n;i++){        int flag=-1;                if(Q.empty()){            puts("0");            return 0;        }        flag=Q.front();        du[flag]=-1;       // cout<<flag<<endl;        Q.pop();        for(int j=0;j<vec[flag].size();j++){             du[vec[flag][j]]--;             if(du[vec[flag][j]]==0){                Q.push(vec[flag][j]);             }        }    }    printf("1\n");    return 0;}


0 0
原创粉丝点击