Submission #1301130

#TimeUsernameProblemLanguageResultExecution timeMemory
1301130sanoConnecting Supertrees (IOI20_supertrees)C++20
19 / 100
97 ms22024 KiB
// Source: https://usaco.guide/general/io
#include <iostream>  // cin, cout
#include <vector>    // vector
#include <string>    // string
#include <set>
#include "supertrees.h"

#define vec vector
#define mod 1000000007
#define For(i,n) for(int i = 0; i < n; i++)
using namespace std;


int construct(vec<vec<int>>p){
    int n = p.size();
    vec<vec<int>> odp(n, vec<int>(n));
    vec<vec<int>> comp;
    vec<int> kde(n, -1);
    For(i, n){
        int zakl = 0;
        if(kde[i] == -1){
            vec<int> s;
            s.push_back(i);
            comp.push_back(s);
            kde[i] = comp.size() - 1;
            zakl = 1;
        }
        int poc = 0;
        For(j, n){
            if(p[i][j] == 0) continue;
            poc++;
            if(kde[j] == -1){
                if(zakl){
                    kde[j] = kde[i];
                    comp[kde[i]].push_back(j);
                }
                else{
                    return 0;
                }
            }
            if(kde[j] != kde[i]){
                return 0;
            }
        }
        if(poc != comp[kde[i]].size()) return 0;
    }
    For(i, comp.size()){
        if(comp[i].size() == 1) continue;
        if(comp[i].size() == 2) return 0;
        For(j, comp[i].size() - 1){
            odp[comp[i][j]][comp[i][j+1]] = 1;
            odp[comp[i][j+1]][comp[i][j]] = 1;
        }
        int pos = comp[i][comp[i].size()-1];
        int prvy = comp[i][0];
        odp[pos][prvy] = 1;
        odp[prvy][pos] = 1;
    }
    build(odp);
    return 1;
}

/*
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
	
    return 0;
}*/
#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...