# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
732751 | raul2008487 | 슈퍼트리 잇기 (IOI20_supertrees) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "supertrees.h"
#include <vector>
std::vector<std::vector<int>> ans;
std::vector<bool> vis;
void dfs(ll i, ll j){
vis[j]=1;
for(ll k1=0;k1<n;k1++){
if(p[j][k1] && !vis[k1]){
ans[j][k1]=ans[k1][j]=1;
dfs(j,k1);
}
}
}
int construct(std::vector<std::vector<int>> p) {
int n = p.size();
vis.resize(n,false);
for(int i=0;i<n;i++){
std::vector<int> row;
row.resize(n,0);
ans.push_back(row);
}
for (int i = 0; i < n; i++) {
if(!vis[i]){
vis[i]=1;
for(int j=i+1;j<n;j++){
if(p[i][j] && !vis[j]){
ans[i][j]=ans[j][i]=1;
dfs(i,j);
}
}
}
}
build(ans);
return 1;
}