Submission #1291784

#TimeUsernameProblemLanguageResultExecution timeMemory
1291784lucasdmyConnecting Supertrees (IOI20_supertrees)C++20
11 / 100
100 ms26140 KiB
#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN=1010;
vector<vector<int>>answer, v;
vector<int>marc(MAXN);
int n, l;
void dfs(int x, int p){
    answer[x][p]=1;
    answer[p][x]=1;
    marc[x]=1;
    l=x;
    for(int k=0;k<n;k++){
        if(v[x][k]==2 and marc[k]==0){
            dfs(k, x);
        }else if(v[x][k]==1 and marc[k]==0){
            answer[x][k]=1;
            answer[k][x]=1;
            marc[k]=1;
        }
    }
}
/*void build(vector<vector<int>>p){
    for(int k=0;k<n;k++){
        for(int i=0;i<n;i++){
            cout<<p[k][i]<<' ';
        }
        cout<<endl;
    }
}*/
int construct(vector<vector<int>>p){
	n=p.size();
    v=p;
    for(int k=0;k<n;k++){
		vector<int>row;
		row.resize(n);
		answer.push_back(row);
	}
    for(int k=0;k<n;k++){
        for(int i=0;i<n;i++){
            answer[k][i]=0;
        }
    }
    for(int k=0;k<n;k++){
        if(marc[k]==0){
            dfs(k, k);
            answer[k][l]=1;
            answer[l][k]=1;
        }
    }
    for(int k=0;k<n;k++){
        answer[k][k]=0;
    }
	build(answer);
	return 1;
}
/*int main(){
    cin>>n;
    vector<vector<int>>in(n, vector<int>(n));
    for(int k=0;k<n;k++){
        for(int i=0;i<n;i++){
            cin>>in[k][i];
        }
    }
    cout<<construct(in);
}*/
#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...