求助站外题,悬赏1关
查看原帖
求助站外题,悬赏1关
703085
Myosotis_alpestris楼主2023/5/2 09:49

传送

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+10;
int num,ans;
int f[10005];
int vis[10005];
vector<vector<int>> edge;
bool flag=0;
void dfs(int x)
{
	vis[x]=1;
	for (auto i:edge[x])
	{
		f[i]=max(f[i],f[x]+1);
		if(vis[i]==1)
		{
			flag=1;
			return;
		}
		if(vis[i]==0)
		{
			dfs(i);
			if(flag) return;
		}
	}
	vis[x]=2;
} 
int main()
{
	int n,m,a,b;
	cin>>n>>m;
	edge.resize(n+1);
	for (int i=1;i<=m;i++)
	{
		cin>>a>>b;
		edge[b].push_back(a);
	}
	for (int i=1;i<=n;i++)
	{
		if(vis[i]==0) dfs(i);
	}
	if(flag)
	{
		cout<<"Poor Xed"<<endl;
		return 0;
	}
	for (int i=1;i<=n;i++)
	{
		ans+=f[i]+100;
	}
	cout<<ans<<endl;
	return 0;
}

2023/5/2 09:49
加载中...