为什么只能拿50???
查看原帖
为什么只能拿50???
298402
cccyyylll888楼主2021/2/4 11:58

代码:

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
const int maxn = 100000 + 5;
int n,m;
vector<int> g[maxn];
vector<int> ret;
int deg[maxn];
int flag;
bool topsort()
{
	for(int i = 1;i <= n;i++)
	{
		if(!deg[i]) ret.push_back(i);
	}
	for(int i = 0;i < ret.size();i++)
	{
		int u = ret[i];
		for(int j = 0;j < g[u].size();j++)
		{
			int v = g[u][j];
			--deg[v];
			if(!deg[v]) ret.push_back(v);
		}
	}
	return ret.size() == n;
}
int main()
{
	cin >> n >> m;
	while(m--)
	{
		int u,v;
		cin >> u >> v;
		g[u].push_back(v);
		++deg[v]; 
	}
	topsort();
	int p = 0;
	for(int i = 0;i < n;i++)
	{
		cout << ret[i] << endl;
	}
	cout << flag;
	return 0;
} 

本蒟蒻认为没有错啊

2021/2/4 11:58
加载中...