30分拓扑求助qwq
查看原帖
30分拓扑求助qwq
229008
yshpdyt楼主2021/3/27 11:45

嘤嘤嘤

#include<bits/stdc++.h>
using namespace std;
vector<int> mmp[100086];
bool vis[100086];
int in[100086];
int q[100086];
int main()
{
	int n,m;
	int x,y;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>y;
		mmp[i].push_back(y);
		in[y]++;
	}
	int f=1,r=0;
	for(int i=1;i<=n;i++)
	{
		if(in[i]==0) q[++r]=i;
	}
	while(f<=r)
	{
		int y=q[f];
		for(int i=0;i<mmp[y].size();i++)
		{
			int x=mmp[y][i];
			in[x]--;
			if(!in[x])
			{
				q[++r]=x;
			} 
		}
		f++;
	}
	cout<<n-r;
	return 0;
}
2021/3/27 11:45
加载中...