Submission #1119132

#TimeUsernameProblemLanguageResultExecution timeMemory
1119132alexddConnecting Supertrees (IOI20_supertrees)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
#include "supertrees.h"
using namespace std;
int n;
vector<int> comp;
bool visited[1005];
vector<int> comp;
vector<vector<int>> p;
void dfs(int nod)
{
    comp.push_back(nod);
    visited[nod]=1;
    for(int i=1;i<=n;i++)
        if(!visited[i] && p[nod][i]>0)
            dfs(i);
}
vector<int> aux;
void dfs2(int nod)
{
    visited[nod]=1;
    aux.push_back(nod);
    for(int i=1;i<=n;i++)
        if(!visited[i] && p[nod][i]==1)
            dfs2(i);
}
int construct(vector<vector<int>> copp)
{
    p = copp;
    n = p.size();
    vector<vector<int>> b(n, vector<int>(n));
    for(int i=0;i<n;i++)
    {
        if(!visited[i])
        {
            comp.clear();
            dfs(i);
            for(int x:comp)
                visited[x]=0;
            vector<int> roots;
            for(int x:comp)
            {
                if(!visited[x])
                {
                    roots.push_back(x);
                    aux.clear();
                    dfs2(x);
                    for(auto y:aux)
                        if(y!=x)
                            b[x][y]=b[y][x]=1;
                }
            }
            if((int)roots.size() == 2)
                return 0;
            if((int)roots.size() > 1)
            {
                for(int i=0;i+1<roots.size();i++)
                    b[roots[i]][roots[i+1]] = b[roots[i+1]][roots[i]] = 1;
                b[roots[0]][roots.back()] = b[roots.back()][roots[0]] = 1;
            }
        }
    }
    build(b);
    return 1;
}

Compilation message (stderr)

supertrees.cpp:7:13: error: redefinition of 'std::vector<int> comp'
    7 | vector<int> comp;
      |             ^~~~
supertrees.cpp:5:13: note: 'std::vector<int> comp' previously declared here
    5 | vector<int> comp;
      |             ^~~~
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:56:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |                 for(int i=0;i+1<roots.size();i++)
      |                             ~~~^~~~~~~~~~~~~