#include <bits/stdc++.h>
#include "supertrees.h"
using namespace std;
/**ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout**/
const int MAXN=1010;
/**void build (vector <vector <int>> b){
int n=b.size ();
for (int i=0;i<n;++i){
for (int j=0;j<n;++j){
cout <<b[i][j]<<' ';
}
cout <<'\n';
}
}**/
int n,maxx;
bool v[MAXN];
vector <int> crt;
vector <vector <int>> rez,p;
void dfs (int node){
v[node]=1;
crt.push_back (node);
for (int i=0;i<n;++i){
if (i!=node and p[node][i] and v[i]==0){
maxx=max (maxx,p[node][i]);
dfs (i);
}
}
}
int construct (vector <vector <int>> aux){
p=aux;
n=p.size ();
for (int i=0;i<n;++i){
if (p[i][i]!=1) return 0;
for (int j=0;j<n;++j){
if (p[i][j]!=p[j][i]) return 0;
if (p[i][j]==3) return 0;
}
}
rez.resize (n, vector <int> (n,0));
for (int i=0;i<n;++i){
if (v[i]==0){
///am o componenta conexa noua pe care o rezolv
crt.clear ();
maxx=0;
dfs (i);
if (maxx==0) continue;///am un nod izolat
if (maxx==1){
///verific ca de la fiecare la fiecare sa am 1
for (auto x:crt){
for (auto y:crt){
if (p[x][y]==0) return 0;
}
}
///am un lant
for (int j=0;j<crt.size ()-1;++j){
rez[crt[j]][crt[j+1]]=1;
rez[crt[j+1]][crt[j]]=1;
}
}
}
}
build (rez);
return 1;
}
| # | 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... |