Submission #300534

#TimeUsernameProblemLanguageResultExecution timeMemory
300534Dilshod_ImomovConnecting Supertrees (IOI20_supertrees)C++17
0 / 100
1058 ms34256 KiB
#include "supertrees.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 7;
int nn, comp, used[N];
set < int > cmp[N];

void rec( int v, vector<std::vector<int>> p ) {
    if ( used[v] ) {
        return;
    }
    //cout << v << endl;
    cmp[ comp ].insert(v);
    used[v] = 1;
    for ( int i = 0; i < nn; i++ ) {
        if ( p[v][i] ) {
            rec( i, p );
        }
    }
}

int construct(std::vector<std::vector<int>> p) {
	nn = p.size();
	std::vector<std::vector<int>> answer;
	for (int i = 0; i < nn; i++) {
		std::vector<int> row;
		row.resize(nn);
		answer.push_back(row);
	}
	for ( int i = 0; i < nn; i++ ) {
        if ( used[i] ) {
            continue;
        }
        comp++;
        rec( i, p );
	}
	for ( int i = 1; i <= comp; i++ ) {
        vector < int > vc;
        for ( auto j: cmp[i] ) {
            vc.push_back( j );
        }
        for ( int i = 0; i < (int)vc.size() - 1; i++ ) {
            answer[ vc[i] ][ vc[i + 1] ] = 1;
            answer[ vc[i + 1] ][ vc[i] ] = 1;
        }
	}
	build(answer);
	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...