Submission #1216515

#TimeUsernameProblemLanguageResultExecution timeMemory
1216515LeonidCukConnecting Supertrees (IOI20_supertrees)C++20
11 / 100
223 ms22184 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; vector<bool>vis; void dfs(int i,vector<vector<int>>&p,vector<vector<int>>&res) { int n=p.size(); vis[i]=true; vector<int>ok; ok.push_back(i); for(int j=0;j<n;j++) { if(i==j)continue; if(p[i][j]==2&&vis[j]==0) { vis[j]=1; ok.push_back(j); } } ok.push_back(i); for(int j=1;j<ok.size();j++) { if(ok.size()==2)break; res[ok[j]][ok[j-1]]=1; res[ok[j-1]][ok[j]]=1; } for(int j=0;j<n;j++) { if(i==j)continue; if(p[i][j]==1&&vis[j]==0) { res[i][j]=1; res[j][i]=1; vis[j]=true; dfs(j,p,res); } } } int construct(vector<vector<int>> p) { int n=p.size(); vis.resize(n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(p[i][j]==3)return 0; } } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { for(int z=j+1;z<n;z++) { if(p[i][j]==1&&p[j][z]==1&&p[i][z]==0)return 0; } } } vector<vector<int>>res(n,vector<int>(n)); for(int i=0;i<n;i++) { if(vis[i]==0)dfs(i,p,res); } build(res); return 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...