Submission #963788

#TimeUsernameProblemLanguageResultExecution timeMemory
963788SuPythonyConnecting Supertrees (IOI20_supertrees)C++17
0 / 100
1 ms504 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; class DSU { vector<int> par; vector<int> siz; public: DSU(int n) { par.resize(n); iota(par.begin(),par.end(),0); siz.assign(n,1); } int find_set(int u) { if (par[u]==u) return u; return par[u]=find_set(par[u]); } bool is_same(int u, int v) { return find_set(u)==find_set(v); } void unite_set(int u, int v) { u=find_set(u); v=find_set(v); if (u==v) return; if (siz[u]<siz[v]) swap(u,v); par[v]=u; siz[u]+=siz[v]; } }; int construct(vector<vector<int>> p) { int n = p.size(); vector<vector<int>> ans(n,vector<int>(n,0)); DSU dsu=DSU(n); for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { if (i==j) continue; if (p[i][j]==1) { dsu.unite_set(i,j); ans[i][j]=1; } } } for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { if (p[i][j]==0&&dsu.is_same(i,j)) { return 0; } } } build(ans); 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...