제출 #1186371

#제출 시각아이디문제언어결과실행 시간메모리
1186371Warinchai슈퍼트리 잇기 (IOI20_supertrees)C++20
0 / 100
0 ms328 KiB
#include "supertrees.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std;

int N;
vector<vector<int>>adj;

int have1[1005];
int have2[1005];
int have3[1005];

int vis1[1005];
int vis2[1005];
int vis3[1005];

int cant=0;

vector<vector<int>> answer;

void build1(int u){
    vector<int>node;
    vis1[u]=1;
    for(int i=0;i<N;i++)if(i!=u&&have1[i]==1)node.push_back(i),vis1[i]=1;
    for(int i=0;i<node.size()-1;i++)answer[node[i]][node[i+1]]=1,answer[node[i+1]][node[i]]=1;
}

int construct(std::vector<std::vector<int>> p) {
	N = p.size();
	for (int i = 0; i < N; i++) {
		vector<int> row;
		row.resize(N);
		answer.push_back(row);
	}
	adj=p;
    /*
    for(int i=0;i<N;i++){
        for(auto x:p[i]){
            if(x==1)have1[i]=1;
            else if(x==2)have2[i]=1;
            else if(x==3)have3[i]=1;
        }
    }
    for(int i=0;i<N;i++)for(int j=0;j<N;j++)if(adj[i][j]!=adj[j][i])cant=1;
    for(int i=0;i<N;i++){
        if(have1[i]&&!vis1[i])build1(i);
    }
    if(cant)return 0;
    */
    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...