在C++的程序编写中,我们常会遇到困扰自己的问题:
Runtime Error...
想用scanf和printf,又太懒;cin和cout又超时。
咋办啊。。。
接下来,最实用的东西登场:::
关闭输入输出同步流:
ios::sync_with_stdio(false);
使用cin,cout的时候,在程序前加上一句。
For Example::
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 200005
int F[N],n,d,p,ans=0x3f3f3f3f;
int dist[N];
bool vis[N];
void init(int n){
for(int i=1;i<=n;i++){
F[i]=i;
dist[i]=0;
}
}
int Find(int x){
if(x==F[x]) return x;
int root=Find(F[x]);
dist[x]+=dist[F[x]];
return F[x]=root;
}
void Link(int x,int y){
int a=Find(x),b=Find(y);
if(a==b){
ans=min(ans,dist[x]+dist[y]+1);
}else{
F[a]=b;
dist[x]=dist[y]+1;
}
}
bool Same(int x,int y){
return Find(x)==Find(y);
}
ios::sync_with_stdio(false);
int main(){
int x;
cin>>n;
init(n);
for(int i=1;i<=n;i++){
cin>>x;
Link(i,x);
}
cout<<ans;
return 0;
}