제출 #803969

#제출 시각아이디문제언어결과실행 시간메모리
803969Warinchai슈퍼트리 잇기 (IOI20_supertrees)C++14
0 / 100
1 ms212 KiB
#include "supertrees.h" #include <vector> #include<bits/stdc++.h> using namespace std; int sz; vector<vector<int> >v; vector<vector<int> >ans; int pr[1005]; int in[1005]; int fp(int a){ if(pr[a]==a){ return a; } return pr[a]=fp(pr[a]); } void un(int a,int b){ if(fp(a)!=fp(b)){ ans[a][b]=1; ans[b][a]=1; pr[fp(b)]=fp(a); } } bool build_1(){ for(int i=0;i<sz;i++){ for(int j=i+1;j<sz;j++){ if(v[i][j]==1){ un(i,j); } } } return 1; } int use_2[1005]; bool build_2(){ int count=0; int have=0; vector<int>cy; for(int i=0;i<sz;i++){ for(int j=i+1;j<sz;j++){ if(v[i][j]==2){ have=1; if(use_2[i]==0){ use_2[i]=1; count++; cy.push_back(i); } if(use_2[j]==0){ use_2[j]=1; count++; cy.push_back(j); } } } } if(count<2&&have==1){ return 0; } if(have==0){ return 1; } for(int i=0;i<cy.size()-1;i++){ un(cy[i],cy[i+1]); in[cy[i]]=1; in[cy[i+1]]=1; } ans[cy[0]][cy[cy.size()-1]]=1; ans[cy[cy.size()-1]][cy[0]]=1; return 1; } bool check_0(){ for(int i=0;i<sz;i++){ for(int j=i+1;j<sz;j++){ if(v[i][j]==0&&fp(i)==fp(j))return 0; } } return 1; } int construct(vector<vector<int> > p) { //cout<<"work"<<endl; sz = p.size(); bool check=0; v.resize(sz); for(int i=0;i<sz;i++){ v[i].resize(sz); } for(int i=0;i<sz;i++){ for(int j=0;j<sz;j++){ //cout<<"i j "<<i<<" "<<j<<endl; v[i][j]=p[i][j]; if(p[i][j]!=p[j][i]||(i==j&&p[i][j]!=1)){ check=1; //cout<<"break"<<endl; break; } } } //cout<<"work"<<endl; if(check){ return 0; } //cout<<"work"<<endl; ans.resize(sz); for(int i=0;i<sz;i++){ ans[i].resize(sz); } for(int i=0;i<sz;i++){ pr[i]=i; } //cout<<"work"<<endl; if(!build_2()){ //cout<<"break 2"<<endl; return 0; } /*if(!build_1()){ cout<<"break 1"<<endl; return 0; }*/ if(!check_0()){ //cout<<"break 0"; return 0; }else{ build(ans); } //cout<<"ans:"<<endl; return 1; }

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

supertrees.cpp: In function 'bool build_2()':
supertrees.cpp:62:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |     for(int i=0;i<cy.size()-1;i++){
      |                 ~^~~~~~~~~~~~
#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...