# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
777042 | 2023-07-08T14:29:02 Z | YassirSalama | Connecting Supertrees (IOI20_supertrees) | C++14 | 0 ms | 0 KB |
#include "supertrees.h" #include <vector> #include<bits/stdc++.h> using namespace std; const int MAXN=1100; int par[MAXN]; void make_set(){ for(int i=0;i<MAXN;i++) par[i]=i; } int find(int node){ if(node==par[node]) return node; return par[node]=find(par[node]); } void merge(int a,int b){ par[find(a)]=b; } int construct(vector<vector<int>> p) { int n = p.size(); vector<vector<int>> answer(n,vector<int>(n,0)); make_set(); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(answer[i][j]) continue; if(find(i)==find(j)) { // if(p[i][j]==0) return 0; answer[i][j]==answer[j][i]=0; } else{ if(p[i][j]==0) continue; merge(i,j); answer[i][j]=answer[j][i]=1; } } } //for() build(answer); return 1; }