Submission #367455

# Submission time Handle Problem Language Result Execution time Memory
367455 2021-02-17T12:30:18 Z MilosMilutinovic Connecting Supertrees (IOI20_supertrees) C++14
Compilation error
0 ms 0 KB
#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;
}

Compilation message

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;
      |            ^