Submission #1883842
Source Code Expand
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
inline int getint()
{
static char c;
while ((c = getchar()) < '0' || c > '9');
int res = c - '0';
while ((c = getchar()) >= '0' && c <= '9')
res = res * 10 + c - '0';
return res;
}
const int MaxN = 200000;
int n;
int fa[MaxN + 1];
vector<int> adj[MaxN + 1];
int cir_l = 0;
int cir[MaxN + 1];
bool vis[MaxN + 1];
int f[MaxN + 1];
int li_n;
int li[MaxN + 1];
void dfs(const int &u)
{
for (int v : adj[u])
if (!vis[v])
dfs(v);
li_n = 0;
li[li_n++] = -1;
li[li_n++] = MaxN << 8;
for (int v : adj[u])
if (!vis[v])
li[li_n++] = f[v];
sort(li, li + li_n);
li_n = unique(li, li + li_n) - li;
for (int i = 0; i < li_n; ++i)
if (li[i + 1] != li[i] + 1)
{
f[u] = li[i] + 1;
break;
}
}
inline bool check()
{
for (int i = 1; i < cir_l; ++i)
{
int u = cir[i];
int v = cir[i - 1];
if (f[u] != f[v])
return true;
}
return ~cir_l & 1;
}
int main()
{
cin >> n;
for (int v = 1; v <= n; ++v)
{
fa[v] = getint();
adj[fa[v]].push_back(v);
}
int sv = 1;
for (int i = 0; i < n; ++i)
sv = fa[sv];
while (!vis[sv])
{
cir[cir_l++] = sv;
vis[sv] = true;
sv = fa[sv];
}
for (int i = 0; i < cir_l; ++i)
dfs(cir[i]);
puts(check() ? "POSSIBLE" : "IMPOSSIBLE");
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Namori Grundy |
| User | InvUsr |
| Language | C++14 (GCC 5.4.1) |
| Score | 800 |
| Code Size | 1450 Byte |
| Status | AC |
| Exec Time | 43 ms |
| Memory | 12672 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 800 / 800 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | example0, example1, example2, example3 |
| All | example0, example1, example2, example3, loop0, loop1, loop10, loop11, loop12, loop13, loop14, loop15, loop16, loop17, loop18, loop19, loop2, loop3, loop4, loop5, loop6, loop7, loop8, loop9, loopex0, loopex1, loopex10, loopex11, loopex12, loopex13, loopex14, loopex15, loopex16, loopex17, loopex18, loopex19, loopex2, loopex20, loopex21, loopex22, loopex23, loopex3, loopex4, loopex5, loopex6, loopex7, loopex8, loopex9, rand0, rand1, rand2, rand3, rand4, rand5, rand6, rand7, rand8, rand9, small0, small1, small2, small3, small4, small5, small6, small7, small8, small9 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| example0 | AC | 3 ms | 5504 KiB |
| example1 | AC | 3 ms | 5504 KiB |
| example2 | AC | 3 ms | 5504 KiB |
| example3 | AC | 3 ms | 5504 KiB |
| loop0 | AC | 35 ms | 9984 KiB |
| loop1 | AC | 36 ms | 9984 KiB |
| loop10 | AC | 36 ms | 9984 KiB |
| loop11 | AC | 36 ms | 9984 KiB |
| loop12 | AC | 36 ms | 9984 KiB |
| loop13 | AC | 36 ms | 9984 KiB |
| loop14 | AC | 36 ms | 9984 KiB |
| loop15 | AC | 36 ms | 9984 KiB |
| loop16 | AC | 35 ms | 9984 KiB |
| loop17 | AC | 36 ms | 9984 KiB |
| loop18 | AC | 35 ms | 9984 KiB |
| loop19 | AC | 35 ms | 9984 KiB |
| loop2 | AC | 36 ms | 9984 KiB |
| loop3 | AC | 36 ms | 9984 KiB |
| loop4 | AC | 36 ms | 9984 KiB |
| loop5 | AC | 36 ms | 9984 KiB |
| loop6 | AC | 36 ms | 9984 KiB |
| loop7 | AC | 36 ms | 9984 KiB |
| loop8 | AC | 35 ms | 9984 KiB |
| loop9 | AC | 36 ms | 9984 KiB |
| loopex0 | AC | 36 ms | 10112 KiB |
| loopex1 | AC | 35 ms | 9984 KiB |
| loopex10 | AC | 36 ms | 9984 KiB |
| loopex11 | AC | 35 ms | 9984 KiB |
| loopex12 | AC | 35 ms | 9984 KiB |
| loopex13 | AC | 36 ms | 9984 KiB |
| loopex14 | AC | 36 ms | 9984 KiB |
| loopex15 | AC | 36 ms | 9984 KiB |
| loopex16 | AC | 36 ms | 10112 KiB |
| loopex17 | AC | 36 ms | 9984 KiB |
| loopex18 | AC | 37 ms | 10112 KiB |
| loopex19 | AC | 36 ms | 9984 KiB |
| loopex2 | AC | 36 ms | 9984 KiB |
| loopex20 | AC | 35 ms | 9984 KiB |
| loopex21 | AC | 36 ms | 9984 KiB |
| loopex22 | AC | 36 ms | 9984 KiB |
| loopex23 | AC | 36 ms | 9984 KiB |
| loopex3 | AC | 36 ms | 9984 KiB |
| loopex4 | AC | 37 ms | 9984 KiB |
| loopex5 | AC | 37 ms | 10112 KiB |
| loopex6 | AC | 36 ms | 9984 KiB |
| loopex7 | AC | 36 ms | 9984 KiB |
| loopex8 | AC | 36 ms | 9984 KiB |
| loopex9 | AC | 36 ms | 10112 KiB |
| rand0 | AC | 12 ms | 6912 KiB |
| rand1 | AC | 17 ms | 7552 KiB |
| rand2 | AC | 6 ms | 6272 KiB |
| rand3 | AC | 33 ms | 9856 KiB |
| rand4 | AC | 43 ms | 12672 KiB |
| rand5 | AC | 20 ms | 7936 KiB |
| rand6 | AC | 9 ms | 6784 KiB |
| rand7 | AC | 4 ms | 5760 KiB |
| rand8 | AC | 27 ms | 9344 KiB |
| rand9 | AC | 4 ms | 5760 KiB |
| small0 | AC | 3 ms | 5504 KiB |
| small1 | AC | 3 ms | 5504 KiB |
| small2 | AC | 3 ms | 5504 KiB |
| small3 | AC | 3 ms | 5504 KiB |
| small4 | AC | 3 ms | 5504 KiB |
| small5 | AC | 3 ms | 5504 KiB |
| small6 | AC | 3 ms | 5504 KiB |
| small7 | AC | 3 ms | 5504 KiB |
| small8 | AC | 3 ms | 5504 KiB |
| small9 | AC | 3 ms | 5504 KiB |