Submission #756332

#TimeUsernameProblemLanguageResultExecution timeMemory
756332TrumlingConnecting Supertrees (IOI20_supertrees)C++14
21 / 100
209 ms26068 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define pb push_back #define F first #define S second #define enter cout<<'\n'; #define INF 99999999999999999 #define MOD 1000000007 #define all(x) x.begin(),x.end() vector<bool>vis(1000,0); vector<bool>vis2(1000,0); vector<vector<int>>g; vector<vector<int>>ans; ll nn; bool dfs1(int start,int beg) { vis[start]=1; for(int i=0;i<nn;i++) if(g[start][i]!=g[beg][i] && i!=start && i!=beg) return 0; for(int i=0;i<nn;i++) if(!vis[i] && g[start][i]==1) { ans[i][start]=1; ans[start][i]=1; return dfs1(i,beg); } vis[beg]=0; return 1; } bool dfs2(int start,int beg) { vis[start]=1; if(start!=beg) for(int i=0;i<nn;i++) { if(g[start][i]==1 && g[beg][i]==1) return 0; if(g[start][i]==2 && g[beg][i]==0 || g[start][i]==0 && g[beg][i]==2) return 0; if(g[start][i]==1 && g[beg][i]==0 || g[start][i]==0 && g[beg][i]==1) return 0; } ll count=0; for(int i=0;i<nn;i++) if(g[start][i]==2 && !vis[i]) count++; if(count==1) { assert(0); assert(1); return 0; } for(int i=0;i<nn;i++) if(!vis[i] && g[start][i]==2) { ans[i][start]=1; ans[start][i]=1; return dfs2(i,beg); } ans[start][beg]=1; ans[beg][start]=1; return 1; } int construct(vector<vector<int>> pr) { nn=pr.size(); g=pr; ans.assign(nn,vector<int>(nn,0)); for(int i=0;i<nn;i++) { bool now=dfs1(i,i); if(!now) return 0; } for(int i=0;i<nn;i++) { if(vis[i]) continue; bool now=dfs2(i,i); if(!now) return 0; } for(int i=0;i<nn;i++) ans[i][i]=0; build(ans); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'bool dfs2(int, int)':
supertrees.cpp:50:21: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   50 |   if(g[start][i]==2 && g[beg][i]==0 || g[start][i]==0 && g[beg][i]==2)
supertrees.cpp:53:21: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   53 |   if(g[start][i]==1 && g[beg][i]==0 || g[start][i]==0 && g[beg][i]==1)
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...