제출 #420127

#제출 시각아이디문제언어결과실행 시간메모리
420127Belgutei슈퍼트리 잇기 (IOI20_supertrees)C++17
11 / 100
458 ms22036 KiB
#include "supertrees.h"
#include<bits/stdc++.h>

using namespace std;

#define mk make_pair
#define ff first
#define ss second
#define pb push_back

map<int,int> mp;
vector<int> tree[1005];


int construct(std::vector<std::vector<int> > p) {
	int n=p.size();
	std::vector<std::vector<int> > answer;
	answer.resize(n);
	bool c1=0;
	for(int i=0; i<p.size(); i++){
		for(int j=0; j<p[i].size(); j++){
			answer[i].resize(n);
			if(p[i][j]>=2) c1=1;
		}
	}
	if(c1==0){
		// subtask 1,2
		int cnt=0;
		for(int i=0; i<n; i++){
			for(int j=0; j<n; j++){
				if(i==j) continue;
				if(p[i][j]==1){
					if(mp[i]==0 && mp[j]==0){
						cnt++;
						mp[i]=cnt;
						mp[j]=cnt;
						tree[cnt].pb(i);
						tree[cnt].pb(j);
						continue;
					}
					if(mp[i]==0){
						mp[i]=mp[j];
						tree[mp[i]].pb(i);
						continue;
					}
					if(mp[j]==0){
						mp[j]=mp[i];
						tree[mp[j]].pb(j);
						continue;
					}
					if(mp[i]!=mp[j]) return 0;
				}
			}
		}
		for(int i=0; i<n; i++){
			for(int j=0; j<n; j++){
				if(i==j) continue;
				if(mp[i]!=mp[j] && p[i][j]==1) return 0;
				if(mp[i]==mp[j] && p[i][j]==0) return 0;
			}
		}
		for(int i=1; i<=cnt; i++){
			for(int j=1; j<tree[i].size(); j++){
				answer[tree[i][j]][tree[i][j-1]]=1;
				answer[tree[i][j-1]][tree[i][j]]=1;
			}
		}
		build(answer);
		return 1;
	}
	build(answer);
	return 1;
}

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

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:20:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |  for(int i=0; i<p.size(); i++){
      |               ~^~~~~~~~~
supertrees.cpp:21:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |   for(int j=0; j<p[i].size(); j++){
      |                ~^~~~~~~~~~~~
supertrees.cpp:63:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |    for(int j=1; j<tree[i].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...