Submission #1518193


Source Code Expand

#include <bits/stdc++.h>
#define fi first
#define se second
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define rrep(i,n) for(int i = 1; i <= (n); ++i)
#define drep(i,n) for(int i = (n)-1; i >= 0; --i)
#define each(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
#define rng(a) a.begin(),a.end()
#define maxs(x,y) x = max(x,y)
#define mins(x,y) x = min(x,y)
#define pb push_back
#define sz(x) (int)(x).size()
#define pcnt __builtin_popcount
#define uni(x) x.erase(unique(rng(x)),x.end())
#define snuke srand((unsigned)clock()+(unsigned)time(NULL));
#define df(x) int x = in()
#define dame { puts("-1"); return 0;}
#define show(x) cout<<#x<<" = "<<x<<endl;
#define PQ(T) priority_queue<T,vector<T>,greater<T> >
#define bn(x) ((1<<x)-1)
#define newline puts("")
#define v(T) vector<T>
#define vv(T) vector<vector<T>>
using namespace std;
typedef long long int ll;
typedef unsigned uint;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef vector<P> vp;
inline int in() { int x; scanf("%d",&x); return x;}
inline void priv(vi a) { rep(i,sz(a)) printf("%d%c",a[i],i==sz(a)-1?'\n':' ');}
template<typename T>istream& operator>>(istream&i,vector<T>&v)
{rep(j,sz(v))i>>v[j];return i;}
template<typename T>string join(const vector<T>&v)
{stringstream s;rep(i,sz(v))s<<' '<<v[i];return s.str().substr(1);}
template<typename T>ostream& operator<<(ostream&o,const vector<T>&v)
{if(sz(v))o<<join(v);return o;}
template<typename T1,typename T2>istream& operator>>(istream&i,pair<T1,T2>&v)
{return i>>v.fi>>v.se;}
template<typename T1,typename T2>ostream& operator<<(ostream&o,const pair<T1,T2>&v)
{return o<<v.fi<<","<<v.se;}
const int MX = 200005, INF = 1001001001;
const ll LINF = 1e18;
const double eps = 1e-10;

vi to[MX];
vi t;

int ui;
vi used, vs;
int dfs(int v, int p=-1) {
  if (used[v] == ui) return v;
  if (used[v]) return -1;
  used[v] = ui;
  rep(i,sz(to[v])) {
    int u = to[v][i];
    if (u == p) continue;
    int r = dfs(u,v);
    if (r == -1) continue;
    vs.pb(v);
    if (v == r) return -1;
    return r;
  }
  return -1;
}

int gfs(int v, int p=-1) {
  set<int> s;
  rep(i,sz(to[v])) {
    int u = to[v][i];
    if (u == p || t[u]) continue;
    int r = gfs(u,v);
    s.insert(r);
  }
  for (int i = 0;; ++i) {
    if (s.count(i)) continue;
    return i;
  }
}

int main() {
  int n;
  scanf("%d",&n);
  rep(i,n) {
    int p;
    scanf("%d",&p);
    --p;
    to[p].pb(i);
  }
  used = vi(n); ui = 1;
  rep(i,n) if (!used[i]) {
    dfs(i);
    ++ui;
    if (sz(vs)) break;
  }
  cerr<<vs<<endl;

  t = vi(n);
  for (int v : vs) t[v] = 1;

  int m = sz(vs);
  v(set<int>) s(m);
  rep(i,m) {
    int v = vs[i];
    for (int u : to[v]) {
      if (t[u]) continue;
      s[i].insert(gfs(v));
    }
  }

  vi c;
  for (int i = 0; sz(c) < 2; ++i) {
    if (s[0].count(i)) continue;
    c.pb(i);
  }
  s.pb(s[0]);
  for (int x0 : c) {
    int x = x0;
    rrep(i,m) {
      int j = 0;
      for (; j == x || s[i].count(j); ++j);
      x = j;
    }
    if (x == x0) {
      puts("POSSIBLE");
      return 0;
    }
  }
  puts("IMPOSSIBLE");
  return 0;
}




















Submission Info

Submission Time
Task F - Namori Grundy
User snuke
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3334 Byte
Status RE
Exec Time 175 ms
Memory 37812 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:86:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d",&n);
                 ^
./Main.cpp:89:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&p);
                   ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 800
Status
AC × 3
WA × 1
AC × 56
WA × 11
RE × 1
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 4992 KB
example1 AC 3 ms 4992 KB
example2 WA 3 ms 4992 KB
example3 AC 3 ms 4992 KB
loop0 AC 125 ms 9472 KB
loop1 AC 125 ms 9472 KB
loop10 WA 126 ms 9600 KB
loop11 AC 126 ms 9472 KB
loop12 AC 123 ms 9472 KB
loop13 WA 123 ms 9600 KB
loop14 AC 124 ms 9472 KB
loop15 AC 127 ms 9472 KB
loop16 WA 123 ms 9600 KB
loop17 AC 130 ms 9472 KB
loop18 AC 124 ms 9472 KB
loop19 AC 124 ms 9472 KB
loop2 WA 123 ms 9600 KB
loop3 AC 123 ms 9472 KB
loop4 AC 126 ms 9472 KB
loop5 AC 126 ms 9472 KB
loop6 WA 129 ms 9600 KB
loop7 WA 127 ms 9600 KB
loop8 AC 123 ms 9600 KB
loop9 AC 133 ms 9472 KB
loopex0 AC 141 ms 9472 KB
loopex1 AC 146 ms 9344 KB
loopex10 AC 143 ms 9344 KB
loopex11 AC 158 ms 9344 KB
loopex12 AC 146 ms 9344 KB
loopex13 AC 144 ms 9344 KB
loopex14 AC 142 ms 9344 KB
loopex15 AC 150 ms 9472 KB
loopex16 AC 150 ms 9472 KB
loopex17 AC 147 ms 9344 KB
loopex18 AC 151 ms 9600 KB
loopex19 AC 149 ms 9344 KB
loopex2 AC 143 ms 9344 KB
loopex20 AC 137 ms 9344 KB
loopex21 AC 150 ms 9472 KB
loopex22 AC 160 ms 9472 KB
loopex23 AC 145 ms 9344 KB
loopex3 AC 148 ms 9344 KB
loopex4 AC 140 ms 9472 KB
loopex5 AC 175 ms 9472 KB
loopex6 AC 156 ms 9344 KB
loopex7 AC 146 ms 9472 KB
loopex8 AC 147 ms 9472 KB
loopex9 AC 145 ms 9472 KB
rand0 AC 23 ms 9004 KB
rand1 AC 33 ms 11228 KB
rand2 AC 10 ms 8476 KB
rand3 AC 83 ms 20392 KB
rand4 AC 86 ms 37812 KB
rand5 AC 38 ms 11372 KB
rand6 AC 17 ms 11348 KB
rand7 AC 6 ms 6144 KB
rand8 AC 52 ms 19072 KB
rand9 AC 6 ms 6360 KB
small0 RE 97 ms 4864 KB
small1 AC 3 ms 4992 KB
small2 WA 3 ms 4992 KB
small3 AC 3 ms 4992 KB
small4 AC 3 ms 4992 KB
small5 AC 3 ms 4992 KB
small6 AC 3 ms 4992 KB
small7 WA 3 ms 4992 KB
small8 WA 3 ms 4992 KB
small9 WA 3 ms 4992 KB