7-67 任务调度的合理性 (25分)(拓扑排序+极简代码)

在这里插入图片描述
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int maxn=110;
vector<int>g[maxn];
int n,in[maxn],k,x,cnt;
queue<int>q;
void topSort()
{
	for(int i=1;i<=n;i++)
		if(!in[i])	q.push(i);
	while(!q.empty())
	{
		int u=q.front();
		q.pop();
		cnt++;
		for(int i=0;i<g[u].size();i++)
		{
			int v=g[u][i];
			in[v]--;
			if(!in[v])	q.push(v);
		}
	}
	if(cnt==n)	cout<<"1";
	else	cout<<"0";
	return;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>k;
		while(k--)
		{
			cin>>x;
			g[x].push_back(i);
			in[i]++;
		}
	}
	topSort();
}
发布了180 篇原创文章 · 获赞 22 · 访问量 9017

猜你喜欢

转载自blog.csdn.net/qq_44622401/article/details/104238348