제출 #440275

#제출 시각아이디문제언어결과실행 시간메모리
440275MohamedAliSaidane슈퍼트리 잇기 (IOI20_supertrees)C++14
0 / 100
1 ms204 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; #define pb push_back #define popb pop_back #define ff first #define ss second vi par; vi rnk; int findset(int i) { if(par[i] == i) return i; return findset(par[i]) ; } void unite(int i, int j) { if(findset(i) == findset(j)) return; int x = findset(i); int y = findset(j); if(rnk[x] < rnk[y]) swap(x,y); par[y] = x; if(rnk[x] == rnk[y]) rnk[x] ++; return ; } int construct(vector<vi> p) { int n = p.size(); vector<vi> b; for (int i = 0; i < n; i++) { vi row; for(int j = 0; j <n; j ++) { par.pb(j); rnk.pb(1); row.pb(0); } b.pb(row); } for(int i = 0; i <n; i ++) { for(int j = 0; j < n; j ++) { if(i == j) b[i][j] = 1; if(p[i][j] > 0) { unite(i,j); b[findset(i)][findset(j)] = 1; } } } for(int i = 0; i <n; i ++) { for(int j = 0; j < n; j ++) { if(i == j) continue; if(p[i][j] == 0 && findset(i) == findset(j)) return 0; } } build(b); 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...