제출 #985744

#제출 시각아이디문제언어결과실행 시간메모리
985744user736482슈퍼트리 잇기 (IOI20_supertrees)C++17
21 / 100
174 ms24264 KiB
#include<bits/stdc++.h>
#include "supertrees.h"
using namespace std;
vector<pair<int,int>>edges;
int n;


int construct(vector<vector<int>> p){
    n=(int)p.size();
    vector<vector<int>>odp;
    for(int i=0;i<n;i++){
        vector<int>v;
        for(int j=0;j<n;j++){
            v.push_back(0);
        }
        odp.push_back(v);
    }
    bool ifdeleted[n];
    for(int i=0;i<n;i++){
        ifdeleted[i]=0;
    }
    for(int i=0;i<n;i++){
        if(ifdeleted[i])
            continue;
        vector<int>same;
        for(int j=0;j<n;j++){
            if(p[i][j]==1){
                if(p[i]==p[j])
                    same.push_back(j);
                else
                    return 0;
            }
        }
        for(int j=1;j<(int)same.size();j++){
            edges.push_back({same[j-1],same[j]});
            ifdeleted[same[j]]=1;
            for(int k=0;k<n;k++){
                p[k][same[j]]=-1;
            }
        }
    }
    for(int i=0;i<(int)edges.size();i++){
        //cout<<edges[i].first<<" "<<edges[i].second<<"\n";
        odp[edges[i].first][edges[i].second]=1;
        odp[edges[i].second][edges[i].first]=1;
    }
    build(odp);
    return 1;
}
/*int main(){
    construct({{1, 1, 2, 2}, {1, 1, 2, 2}, {2, 2, 1, 2}, {2, 2, 2, 1}});
    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...