Submission #397154

#TimeUsernameProblemLanguageResultExecution timeMemory
397154AntekbConnecting Supertrees (IOI20_supertrees)C++14
100 / 100
260 ms23996 KiB
#include "supertrees.h" #include <vector> using namespace std; int construct(vector<vector<int>> p) { int n = p.size(); for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ if(p[i][j]==3){ return 0; } } } int vis[n]; for(int i=0; i<n; i++)vis[i]=0; vector<vector<int>> answer; for (int i = 0; i < n; i++) { vector<int> row; row.resize(n); answer.push_back(row); } for(int i=0; i<n; i++){ if(!vis[i]){ vector<int> V; for(int j=0; j<n; j++){ if(p[i][j])V.push_back(j); } for(int u:V){ for(int v:V){ if(!p[u][v]){ return 0; } } } for(int u:V){ int cnt=0; for(int v=0;v<n; v++){ if(p[u][v]){ cnt++; } } if(cnt!=V.size())return 0; } for(int u:V){ for(int v:V){ if(v==u){ break; } if(p[u][v]==1){ vis[u]=vis[v]; } } if(vis[u]==0){ vis[u]=u+1; } } for(int u:V){ for(int v:V){ if((p[u][v]==1) ^ (vis[u]==vis[v]))return 0; } } vector<int> V2; for(int u:V){ if(vis[u]!=u+1)answer[u][vis[u]-1]=1, answer[vis[u]-1][u]=1; else V2.push_back(u); } if(V2.size()==2)return 0; else if(V2.size()>2){ for(int j=0; j<V2.size(); j++){ answer[V2[j]][V2[(j+1)%V2.size()]]=1; answer[V2[(j+1)%V2.size()]][V2[j]]=1; } } } } build(answer); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:42:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |     if(cnt!=V.size())return 0;
      |        ~~~^~~~~~~~~~
supertrees.cpp:69:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     for(int j=0; j<V2.size(); j++){
      |                  ~^~~~~~~~~~
#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...