Submission #367454

# Submission time Handle Problem Language Result Execution time Memory
367454 2021-02-17T12:29:52 Z MilosMilutinovic Connecting Supertrees (IOI20_supertrees) C++14
Compilation error
0 ms 0 KB
#include <bits/stdc++.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;
}
int main(){

    return 0;
}

Compilation message

supertrees.cpp: In function 'void construct(std::vector<std::vector<int> >)':
supertrees.cpp:18:66: error: return-statement with a value, in function returning 'void' [-fpermissive]
   18 |     for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(p[i][j]==3)return 0;
      |                                                                  ^
supertrees.cpp:22:68: error: return-statement with a value, in function returning 'void' [-fpermissive]
   22 |         for(int x:euler)for(int y:euler)if(x!=y&&p[x][y]==0)return 0;
      |                                                                    ^
supertrees.cpp:31:9: error: 'DFS2' was not declared in this scope; did you mean 'DFS1'?
   31 |         DFS2(i);
      |         ^~~~
      |         DFS1
supertrees.cpp:36:40: error: return-statement with a value, in function returning 'void' [-fpermissive]
   36 |         if((int)euler.size()==2)return 0;
      |                                        ^
supertrees.cpp:37:68: error: return-statement with a value, in function returning 'void' [-fpermissive]
   37 |         for(int x:euler)for(int y:euler)if(x!=y&&p[x][y]==0)return 0;
      |                                                                    ^
supertrees.cpp:46:5: error: 'build' was not declared in this scope
   46 |     build(ans);
      |     ^~~~~
supertrees.cpp:47:12: error: return-statement with a value, in function returning 'void' [-fpermissive]
   47 |     return 1;
      |            ^