- 编程
传递游戏的暴力做法排错
- 2022-6-28 13:41:17 @
#include<iostream>
#include<vector>
#include<cstdio>
#include<set>
using namespace std;
const int N = 2E5 + 5;
int n, a[N];
set<int> ms[N];
void initInput(void)
{
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
{
scanf("%d", &(a[i]));
ms[a[i]].insert(i);
}
}
int main(void)
{
initInput();
int ans = 1;
int flag = 0;
while(1)
{
ans++;
for(int i = 1; i <= n; ++i)
{
for(auto j:ms[i])
{
if(j == a[i])
{
flag = 1;
break;
}
if(ms[a[i]].count(j)) continue;
ms[a[i]].insert(j);
}
if(ms[a[i]].count(i)) continue;
ms[a[i]].insert(i);
if(flag) break;
}
if(flag) break;
}
printf("%d", ans);
return 0;
}
0 条评论
目前还没有评论...