Submission #1284568

#TimeUsernameProblemLanguageResultExecution timeMemory
1284568RaresConnecting Supertrees (IOI20_supertrees)C++20
11 / 100
93 ms26124 KiB
#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){
                ///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 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...