比赛 |
图的简单问题 |
评测结果 |
TTATTTTTTT |
题目名称 |
信息传递 |
最终得分 |
10 |
用户昵称 |
FFF团 |
运行时间 |
9.305 s |
代码语言 |
C++ |
内存使用 |
10.23 MiB |
提交时间 |
2017-05-14 21:09:15 |
显示代码纯文本
#include<bits/stdc++.h>
#include<set>
using namespace std;
set<int>p1[200001],p2[200001];
int a[200001],n,t=1;
int main(){
freopen("2015message.in","r",stdin);
freopen("2015message.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
p1[i].insert(i);
p2[i].insert(i);
}
while(true){
for(int i=1;i<=n;i++){
if(t%2!=0){
for(set<int>::iterator it=p1[i].begin();it!=p1[i].end();++it){
p2[a[i]].insert(*it);
}
if(n==p2[a[i]].size()){
printf("%d\n",t+1);
return 0;
}
}
else{
for(set<int>::iterator it=p2[i].begin();it!=p2[i].end();++it){
p1[a[i]].insert(*it);
}
if(n==p1[a[i]].size()){
printf("%d\n",t+1);
return 0;
}
}
}
t++;
}
}