제출 #915407

#제출 시각아이디문제언어결과실행 시간메모리
915407chirathnirodha슈퍼트리 잇기 (IOI20_supertrees)C++17
21 / 100
188 ms22108 KiB
#include "supertrees.h" #include <vector> using namespace std; #define F first #define S sedond #define PB push_back #define MP make_pair #define P push #define I insert typedef long long ll; typedef long l; typedef unsigned long long ull; int uni[1000]; int fin(int x){ if(uni[x]==x)return x; else return fin(uni[x]); } void merg(int x,int y){ x=fin(x); y=fin(y); if(x<y)uni[y]=x; else uni[x]=y; } int construct(vector<vector<int>> p) { int n = p.size(); vector<vector<int>>answer(n,vector<int>(n,0)); for(int i=0;i<n;i++)uni[i]=i; for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(p[i][j]==3)return 0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(p[i][j]==1 && fin(i)!=fin(j)){ answer[i][j]=answer[j][i]=1; merg(i,j); } } } for(int i=0;i<n;i++){ vector<int> v;v.PB(fin(i)); for(int j=i+1;j<n;j++){ if(p[i][j]==2 && fin(i)!=fin(j)){ v.PB(fin(j)); merg(i,j); } } if(v.size()==2)return 0; if(v.size()>2){ for(int j=0;j<v.size()-1;j++){ answer[v[j]][v[j+1]]=answer[v[j+1]][v[j]]=1; } answer[i][v.back()]=answer[v.back()][i]; } } for(int i=0;i<n;i++)for(int j=i+1;j<n;j++)if(p[i][j]==0 && fin(i)==fin(j))return 0; build(answer); return 1; }

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

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:48:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |    for(int j=0;j<v.size()-1;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...