1. 程式人生 > 其它 >7-5 任務排程的合理性 (25 分)

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;
}