Submission #718400

#TimeUsernameProblemLanguageResultExecution timeMemory
718400lamGame (APIO22_game)C++17
30 / 100
4026 ms8028 KiB
#include "game.h" #include <bits/stdc++.h> using namespace std; int n,k; typedef pair<int,int> ii; #define ff first #define ss second const int maxn = 3e5 + 10; vector <int> adj[maxn]; int l[maxn],t[maxn],cnt,num[maxn]; int scc,id[maxn]; stack<int> st; bool dau[maxn]; void dfs(int x) { st.push(x); l[x]=t[x]=++cnt; for (int i:adj[x]) if (!dau[i]) { if (t[i]==0) { dfs(i); l[x]=min(l[x],l[i]); } else l[x]=min(l[x],t[i]); } if (l[x]==t[x]) { int temp; scc++; do { temp=st.top(); st.pop(); dau[temp]=1; id[temp]=scc; } while (temp!=x); } } bool check() { for (int i=1; i<=n; i++) l[i]=t[i]=dau[i]=id[i]=num[i]=0; while (!st.empty()) st.pop(); cnt=scc=0; for (int i=1; i<=n; i++) if (!t[i]) dfs(i); for (int i=1; i<=n; i++) for (int j:adj[i]) if (id[i]==id[j]) num[id[i]]++; for (int i=1; i<=k; i++) if (num[id[i]]>0) return 1; return 0; } void init(int N, int K) { n=N; k=K; for (int i=1; i<=n; i++) adj[i].clear(); for (int i=2; i<=k; i++) adj[i-1].push_back(i); } int add_teleporter(int u, int v) { u++; v++; adj[u].push_back(v); return check(); }

Compilation message (stderr)

game.cpp: In function 'bool check()':
game.cpp:45:52: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   45 |     for (int i=1; i<=n; i++) l[i]=t[i]=dau[i]=id[i]=num[i]=0;
      |                                               ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...