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

浙公网安备 33010602011771号