Submission #1240379

#TimeUsernameProblemLanguageResultExecution timeMemory
1240379vivkostovSimurgh (IOI17_simurgh)C++20
Compilation error
0 ms0 KiB
#pragma once
#include "grader.cpp"
#include "simurgh.h"
#include <bits/stdc++.h>
using namespace std;
struct cell
{
    int to,ind;
};
vector<int>otg,h,f,rv,ru;
vector<cell>v[505];
int n,m,used[505][505],lead[505],sz[505],mas[505];
void force(int el)
{
    int br,ind;
    for(int i=0;i<n;i++)
    {
        br=0;
        for(int j=0;j<v[i].size();j++)
        {
            if(used[i][v[i][j].to])continue;
            br++;
            ind=j;
        }
        if(br==1)
        {
            used[i][v[i][ind].to]=el;
            used[v[i][ind].to][i]=el;
            otg.push_back(v[i][ind].ind);
            f.push_back(v[i][ind].ind);
        }
    }
}
int get_lead(int beg)
{
    if(lead[beg]==beg)return beg;
    return lead[beg]=get_lead(lead[beg]);
}
void prec()
{
    for(int i=0;i<n;i++)
    {
        lead[i]=i;
        sz[i]=1;
    }
}
void add(int a,int b,int ind)
{
    a=get_lead(a);
    b=get_lead(b);
    if(a==b)return;
    h.push_back(ind);
    if(sz[a]<sz[b])swap(a,b);
    lead[b]=a;
    sz[a]+=sz[b];
}
void get_tree(int beg)
{
    prec();
    h.clear();
    for(int i=0;i<f.size();i++)
    {
        add(rv[f[i]],ru[f[i]],f[i]);
    }
    for(int i=0;i<n;i++)
    {
        if(i==beg)continue;
        for(int j=0;j<v[i].size();j++)
        {
            if(used[i][v[i][j].to]==2||v[i][j].to==beg)continue;
            add(i,v[i][j].to,v[i][j].ind);
        }
    }
}
void find_ver(int beg)
{
    int ma=0,w;
    get_tree(beg);
    for(int i=0;i<v[beg].size();i++)
    {
        w=v[beg][i].to;
        if(used[beg][w]==1)
        {
            h.push_back(v[beg][i].ind);
            ma=count_common_roads(h);
            h.pop_back();
            break;
        }
    }
    int c;
    memset(mas,0,sizeof(mas));
    for(int i=0;i<v[beg].size();i++)
    {
        w=v[beg][i].to;
        if(!used[beg][w])
        {
            h.push_back(v[beg][i].ind);
            c=count_common_roads(h);
            ma=max(ma,c);
            mas[i]=c;
            h.pop_back();
        }
    }
    for(int i=0;i<v[beg].size();i++)
    {
        w=v[beg][i].to;
        if(mas[i]==0)continue;
        if(mas[i]!=ma)used[w][beg]=3;
        if(mas[i]==ma)
        {
            used[w][beg]=1;
            otg.push_back(v[beg][i].ind);
        }
    }
}
vector<int> find_roads(int N, vector<int> U, vector<int> V)
{
    n=N;
    m=u.size();
    for(int i=0;i<m;i++)
    {
        cell h;
        h.ind=i;
        h.to=V[i];
        v[U[i]].push_back(h);
        h.to=U[i];
        v[V[i]].push_back(h);
    }
    rv=V;
    ru=U;
    for(int i=1;i<=n;i++)
    {
        force(2);
    }
    /*for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout<<used[i][j]<<" ";
        }
        cout<<endl;
    }*/
    for(int i=0;i<n;i++)
    {
        find_ver(i);
    }
    return otg;
}

Compilation message (stderr)

simurgh.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
simurgh.cpp:11:13: error: conflicting declaration 'std::vector<cell> v [505]'
   11 | vector<cell>v[505];
      |             ^
In file included from simurgh.cpp:2:
grader.cpp:22:23: note: previous declaration as 'std::vector<int> v'
   22 | static vector<int> u, v;
      |                       ^
simurgh.cpp:12:5: error: redefinition of 'int n'
   12 | int n,m,used[505][505],lead[505],sz[505],mas[505];
      |     ^
In file included from simurgh.cpp:2:
grader.cpp:21:12: note: 'int n' previously declared here
   21 | static int n, m, q = 0;
      |            ^
simurgh.cpp:12:7: error: redefinition of 'int m'
   12 | int n,m,used[505][505],lead[505],sz[505],mas[505];
      |       ^
In file included from simurgh.cpp:2:
grader.cpp:21:15: note: 'int m' previously declared here
   21 | static int n, m, q = 0;
      |               ^
simurgh.cpp: In function 'void force(int)':
simurgh.cpp:19:28: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)i))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   19 |         for(int j=0;j<v[i].size();j++)
      |                            ^~~~
simurgh.cpp:21:28: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   21 |             if(used[i][v[i][j].to])continue;
      |                            ^
simurgh.cpp:27:25: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   27 |             used[i][v[i][ind].to]=el;
      |                         ^
simurgh.cpp:28:22: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   28 |             used[v[i][ind].to][i]=el;
      |                      ^
simurgh.cpp:29:31: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   29 |             otg.push_back(v[i][ind].ind);
      |                               ^
simurgh.cpp:30:29: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   30 |             f.push_back(v[i][ind].ind);
      |                             ^
simurgh.cpp: In function 'void get_tree(int)':
simurgh.cpp:68:28: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)i))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   68 |         for(int j=0;j<v[i].size();j++)
      |                            ^~~~
simurgh.cpp:70:28: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   70 |             if(used[i][v[i][j].to]==2||v[i][j].to==beg)continue;
      |                            ^
simurgh.cpp:70:44: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   70 |             if(used[i][v[i][j].to]==2||v[i][j].to==beg)continue;
      |                                            ^
simurgh.cpp:71:23: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   71 |             add(i,v[i][j].to,v[i][j].ind);
      |                       ^
simurgh.cpp:71:34: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   71 |             add(i,v[i][j].to,v[i][j].ind);
      |                                  ^
simurgh.cpp: In function 'void find_ver(int)':
simurgh.cpp:79:26: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)beg))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   79 |     for(int i=0;i<v[beg].size();i++)
      |                          ^~~~
simurgh.cpp:81:17: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   81 |         w=v[beg][i].to;
      |                 ^
simurgh.cpp:84:31: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   84 |             h.push_back(v[beg][i].ind);
      |                               ^
simurgh.cpp:92:26: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)beg))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
   92 |     for(int i=0;i<v[beg].size();i++)
      |                          ^~~~
simurgh.cpp:94:17: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   94 |         w=v[beg][i].to;
      |                 ^
simurgh.cpp:97:31: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
   97 |             h.push_back(v[beg][i].ind);
      |                               ^
simurgh.cpp:104:26: error: request for member 'size' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)beg))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
  104 |     for(int i=0;i<v[beg].size();i++)
      |                          ^~~~
simurgh.cpp:106:17: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
  106 |         w=v[beg][i].to;
      |                 ^
simurgh.cpp:112:33: error: invalid types '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}[int]' for array subscript
  112 |             otg.push_back(v[beg][i].ind);
      |                                 ^
simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:125:17: error: request for member 'push_back' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)U.std::vector<int>::operator[](((std::vector<int>::size_type)i))))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
  125 |         v[U[i]].push_back(h);
      |                 ^~~~~~~~~
simurgh.cpp:127:17: error: request for member 'push_back' in 'v.std::vector<int>::operator[](((std::vector<int>::size_type)V.std::vector<int>::operator[](((std::vector<int>::size_type)i))))', which is of non-class type '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'}
  127 |         v[V[i]].push_back(h);
      |                 ^~~~~~~~~