Submission #337266

#TimeUsernameProblemLanguageResultExecution timeMemory
337266RegisterConnecting Supertrees (IOI20_supertrees)C++14
100 / 100
271 ms24328 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; typedef vector<vector<int> > va; const int N=1005; int n,idc[N],idt[N]; bool vis[N]; inline void add(int u,int v,va&g) {g[u][v]=g[v][u]=1;} int construct(va p){ n=p.size();va g(n,vector<int>(n)); for(int i=0;i<n;i++) if(find(p[i].begin(),p[i].end(),3)!=p[i].end()) return 0; for(int i=0;i<n;i++) if(!vis[i]){ queue<int> qc;qc.push(i);vector<int> c; while(!qc.empty()){ int u=qc.front();qc.pop();if(vis[u]) continue; queue<int> qt;qt.push(u);vector<int> t;c.push_back(u); while(!qt.empty()){ int x=qt.front();qt.pop();if(vis[x]) continue; t.push_back(x);idt[x]=u;idc[x]=i;vis[x]=1; for(int j=0;j<n;j++) if(p[x][j]==1) qt.push(j); else if(p[x][j]==2) qc.push(j); } for(int j=0;j+1<t.size();j++) add(t[j],t[j+1],g); } int sz=c.size();if(sz==2) return 0; if(sz>2) for(int j=0;j<sz;j++) add(c[j],c[(j+1)%sz],g); } for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) if(idt[i]==idt[j]) {if(p[i][j]!=1) return 0;} else if(idc[i]==idc[j]) {if(p[i][j]!=2) return 0;} build(g);return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(va)':
supertrees.cpp:26:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(int j=0;j+1<t.size();j++) add(t[j],t[j+1],g);
      |                 ~~~^~~~~~~~~
#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...