제출 #397154

#제출 시각아이디문제언어결과실행 시간메모리
397154AntekbConnecting Supertrees (IOI20_supertrees)C++14
100 / 100
260 ms23996 KiB
#include "supertrees.h"
#include <vector>
using namespace std;

int construct(vector<vector<int>> p) {
	int n = p.size();
	for(int i=0; i<n; i++){
		for(int j=0; j<n; j++){
			if(p[i][j]==3){
				return 0;
			}
		}
	}
	int vis[n];
	for(int i=0; i<n; i++)vis[i]=0;
	vector<vector<int>> answer;
	for (int i = 0; i < n; i++) {
		vector<int> row;
		row.resize(n);
		answer.push_back(row);
	}
	for(int i=0; i<n; i++){
		if(!vis[i]){
			vector<int> V;
			for(int j=0; j<n; j++){
				if(p[i][j])V.push_back(j);
			}
			for(int u:V){
				for(int v:V){
					if(!p[u][v]){
						return 0;
					}
				}
			}
			for(int u:V){
				int cnt=0;
				for(int v=0;v<n; v++){
					if(p[u][v]){
						cnt++;
					}
				}
				if(cnt!=V.size())return 0;
			}
			for(int u:V){
				for(int v:V){
					if(v==u){
						break;
					}
					if(p[u][v]==1){
						vis[u]=vis[v];
					}
				}
				if(vis[u]==0){
					vis[u]=u+1;
				}
			}
			for(int u:V){
				for(int v:V){
					if((p[u][v]==1) ^ (vis[u]==vis[v]))return 0;
				}
			}
			vector<int> V2;
			for(int u:V){
				if(vis[u]!=u+1)answer[u][vis[u]-1]=1, answer[vis[u]-1][u]=1;
				else V2.push_back(u);
			}
			if(V2.size()==2)return 0;
			else if(V2.size()>2){
				for(int j=0; j<V2.size(); j++){
					answer[V2[j]][V2[(j+1)%V2.size()]]=1;
					answer[V2[(j+1)%V2.size()]][V2[j]]=1;
				}
			}
		}
	}
	build(answer);
	return 1;
}

컴파일 시 표준 에러 (stderr) 메시지

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:42:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |     if(cnt!=V.size())return 0;
      |        ~~~^~~~~~~~~~
supertrees.cpp:69:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     for(int j=0; j<V2.size(); j++){
      |                  ~^~~~~~~~~~
#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...