7-5 任务调度的合理性 (25 分)

题意

简单拓扑排序查找是否成环。

代码

#include <bits/stdc++.h>
using namespace std;
int dis[105][105], ru[105];
int n;
void Tsort(){
    int cnt=0;
     int flag=1;
    while(flag){
        flag=0;
        for(int i=1;i<=n;i++){
            if(!ru[i]){
                ru[i]--;
                cnt++;
                flag=1;
                for(int j=1;j<=n;j++){
                    if(dis[i][j]!=-1){
                        if(ru[j]) ru[j]--; 
                    }
                }
            }
        }
    }

    if(cnt==n) cout<<"1"<<endl;
    else cout<<"0"<<endl;
}
    

int main()
{
    memset(dis,-1,sizeof dis);
    cin>>n;
    for(int i=1;i<=n;i++){
        int k; cin>>k;
           ru[i]=k;
        for(int j=0;j<k;j++){
           int t;
           cin>>t;
           dis[t][i]=1;
           //注意一下,输入的依赖集合,不要赋值错误
        }
    }
    Tsort();
    return 0;
}



posted @ 2021-11-24 20:00  kingwzun  阅读(147)  评论(0编辑  收藏  举报