Submission #1136566

#TimeUsernameProblemLanguageResultExecution timeMemory
1136566bestbestConnecting Supertrees (IOI20_supertrees)C++20
21 / 100
119 ms26212 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; #define en '\n' #define sp ' ' const int N=1000; int par[N],chk[N][N],vis[N],branch[N]; map<int,vector<int>> m; int find(int a){ if(a!=par[a])return par[a]=find(par[a]); return par[a]; } int construct(vector<vector<int>> p) { int n = p.size(); 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++)par[i]=i; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(!p[i][j] && par[find(i)]==par[find(j)])return 0; else if(p[i][j] && (chk[i][j]==0 || chk[i][j]==1)){ chk[i][j]=1; par[find(i)]=par[find(j)]; } else if(!p[i][j] && (chk[i][j]==0 || chk[i][j]==-1)){ chk[i][j]=-1; } else return 0; } } for(int i=0;i<n;i++){ m[par[i]].push_back(i); } //cout << m.size() << "eo" << en; for(auto [k,v]:m){ for(int i=0;i<v.size()-1;i++){ //cout << v[i] << sp; answer[v[i]][v[i+1]]=1; answer[v[i+1]][v[i]]=1; } //cout << en; } // for(int i=0;i<n-1;i++)answer[i][i+1]=answer[i+1][i]=1; build(answer); 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...