求dalao帮我看看为什么编译错误
  • 板块学术版
  • 楼主Masna_Kimoyo
  • 当前回复9
  • 已保存回复9
  • 发布时间2020/10/4 17:12
  • 上次更新2023/11/5 12:02:46
查看原帖
求dalao帮我看看为什么编译错误
199459
Masna_Kimoyo楼主2020/10/4 17:12

信息传递 P2661

#include<bits/stdc++.h>
using namespace std;
const int N=200005;
int k,n,ans=1e9;
int deg[N],fa[N];
bool vis[N];
inline int read()
{
	int w=0,x=0;
	char c=getchar();
	while(!isdigit(c))
		w|=c=='-',c=getchar();
	while(isdigit(c))
		x=(x<<3)+(x<<1)+(c^48),c=getchar();
	return w?-x:x;
}
inline void topsort(int x)
{
	while(1)
	{
		if(!deg[x])
			vis[x]=true;
		else	break;
		deg[fa[x]]--;
		x=fa[x];
	}
}
inline int dfs(int x)
{
	int step=0;
	while(!vis[x])
	{
		++step;
		vis[x]=true;
		x=fa[x];
	}
	return step;
}
int main()
{
	n=read();
	for(register int i=1;i<=n;++i)
		fa[i]=read(),deg[fa[i]]++;
	for(register int i=1;i<=n;++i)
		if(!deg[i])	topsort(i);
	for(register int i=1;i<=n;++i)
		if(!vis[i])	ans=min(ans,dfs(i));
	printf("%d",ans);
	return 0;
}

编译器居然说我编译失败? 自己在c++上编译的好好的啊

2020/10/4 17:12
加载中...