제출 #367455

#제출 시각아이디문제언어결과실행 시간메모리
367455MilosMilutinovic슈퍼트리 잇기 (IOI20_supertrees)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; #define pb push_back const int N=1050; vector<int> E[N]; vector<vector<int>> p,ans; void AddEdge(int u,int v){E[u].pb(v);E[v].pb(u);} bool was[N]; vector<int> euler; void DFS1(int u){ was[u]=true; euler.pb(u); for(int e:E[u])if(!was[e]&&p[u][e]==1)DFS1(e); } void construct(vector<vector<int>> P){ int n=(int)P.size();p=P; 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=0;j<n;j++)if(p[i][j]>0)AddEdge(i,j); for(int i=0;i<n;i++)if(!was[i]){ DFS1(i); for(int x:euler)for(int y:euler)if(x!=y&&p[x][y]==0)return 0; for(int i=1;i<(int)euler.size();i++){ int from=euler[i],to=euler[i-1]; ans[from][to]=ans[to][from]=1; } euler.clear(); } memset(was,false,sizeof(was)); for(int i=0;i<n;i++)if(!was[i]){ DFS2(i); if((int)euler.size()==1){ euler.clear(); continue; } if((int)euler.size()==2)return 0; for(int x:euler)for(int y:euler)if(x!=y&&p[x][y]==0)return 0; for(int i=0;i<(int)euler.size();i++){ int from=euler[i],to=euler[i-1]; ans[from][to]=ans[to][from]=1; } int from=euler[0],to=euler.back(); ans[from][to]=ans[to][from]=1; euler.clear(); } build(ans); return 1; }

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

supertrees.cpp:17:6: error: ambiguating new declaration of 'void construct(std::vector<std::vector<int> >)'
   17 | void construct(vector<vector<int>> P){
      |      ^~~~~~~~~
In file included from supertrees.cpp:2:
supertrees.h:3:5: note: old declaration 'int construct(std::vector<std::vector<int> >)'
    3 | int construct(std::vector<std::vector<int>> p);
      |     ^~~~~~~~~
supertrees.cpp: In function 'void construct(std::vector<std::vector<int> >)':
supertrees.cpp:19:66: error: return-statement with a value, in function returning 'void' [-fpermissive]
   19 |     for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(p[i][j]==3)return 0;
      |                                                                  ^
supertrees.cpp:23:68: error: return-statement with a value, in function returning 'void' [-fpermissive]
   23 |         for(int x:euler)for(int y:euler)if(x!=y&&p[x][y]==0)return 0;
      |                                                                    ^
supertrees.cpp:32:9: error: 'DFS2' was not declared in this scope; did you mean 'DFS1'?
   32 |         DFS2(i);
      |         ^~~~
      |         DFS1
supertrees.cpp:37:40: error: return-statement with a value, in function returning 'void' [-fpermissive]
   37 |         if((int)euler.size()==2)return 0;
      |                                        ^
supertrees.cpp:38:68: error: return-statement with a value, in function returning 'void' [-fpermissive]
   38 |         for(int x:euler)for(int y:euler)if(x!=y&&p[x][y]==0)return 0;
      |                                                                    ^
supertrees.cpp:48:12: error: return-statement with a value, in function returning 'void' [-fpermissive]
   48 |     return 1;
      |            ^