# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
337266 | Register | Connecting Supertrees (IOI20_supertrees) | C++14 | 271 ms | 24328 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 <bits/stdc++.h>
#include "supertrees.h"
using namespace std;
typedef vector<vector<int> > va;
const int N=1005;
int n,idc[N],idt[N];
bool vis[N];
inline void add(int u,int v,va&g) {g[u][v]=g[v][u]=1;}
int construct(va p){
n=p.size();va g(n,vector<int>(n));
for(int i=0;i<n;i++)
if(find(p[i].begin(),p[i].end(),3)!=p[i].end()) return 0;
for(int i=0;i<n;i++)
if(!vis[i]){
queue<int> qc;qc.push(i);vector<int> c;
while(!qc.empty()){
int u=qc.front();qc.pop();if(vis[u]) continue;
queue<int> qt;qt.push(u);vector<int> t;c.push_back(u);
while(!qt.empty()){
int x=qt.front();qt.pop();if(vis[x]) continue;
t.push_back(x);idt[x]=u;idc[x]=i;vis[x]=1;
for(int j=0;j<n;j++)
if(p[x][j]==1) qt.push(j);
else if(p[x][j]==2) qc.push(j);
}
for(int j=0;j+1<t.size();j++) add(t[j],t[j+1],g);
}
int sz=c.size();if(sz==2) return 0;
if(sz>2) for(int j=0;j<sz;j++) add(c[j],c[(j+1)%sz],g);
}
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(idt[i]==idt[j]) {if(p[i][j]!=1) return 0;}
else if(idc[i]==idc[j]) {if(p[i][j]!=2) return 0;}
build(g);return 1;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |