제출 #1326395

#제출 시각아이디문제언어결과실행 시간메모리
1326395arshiadPipes (CEOI15_pipes)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
using namespace std;

const int maxn = 1e5 + 10;
const int inf = 1e9;
const int mod = 1e9 + 7;
const int lg = 20;

int n, m;
int sz1[maxn], par1[maxn];
int sz2[maxn], par2[maxn];
vector <pii> ans;
vector <int> g[maxn];
bool vis[maxn];
int h[maxn], ps[maxn], par[maxn];

int find1(int u){
    return par1[u] == u ? u : par1[u] = find1(par1[u]);
}
int find2(int u){
    return par2[u] == u ? u : par2[u] = find2(par2[u]);
}

bool Union1(int u, int v){
    u = find1(u), v = find1(v);
    if (u == v)
        return 0;
    if (sz1[u] < sz1[v])
        swap(u, v);
    sz1[u] += sz1[v];
    par1[v] = u;
    return 1;
}
bool Union2(int u, int v){
    u = find2(u), v = find2(v);
    if (u == v)
        return 0;
    if (sz2[u] < sz2[v])
        swap(u, v);
    sz2[u] += sz2[v];
    par2[v] = u;
    return 1;
}

void DFS(int u){
    vis[u] = 1;
    for (auto v : g[u]){
        if (v == par[u])
            continue;
        if (vis[v]){
            if (h[u] > h[v]){
                ps[u] --;
                ps[v] ++;
            }
            continue;
        }
        par[v] = u;
        h[v] = h[u] + 1;
        DFS(v);
        ps[u] += ps[v];
    }
}

void solve(){
    cin >> n >> m;

    for (int i = 1 ; i <= n ; i ++){
        par1[i] = par2[i] = i;
        sz1[i] = sz2[i] = 1;
    }

    for (int i = 1 ; i <= m ; i ++){
        int u, v;
        cin >> u >> v;
        if (Union1(u, v)){
            g[u].pb(v);
            g[v].pb(u);
        }
        else if (Union2(u, v)){
            g[u].pb(v);
            g[v].pb(u);
        }
    }

    for (int i = 1 ; i <= n ; i ++)
        if (!vis[i]){
            h[i] = 0, par[i] = 0;
            DFS(i);
        }

    for (int i = 1 ; i <= n ; i ++){
        if (par[i] == 0)
            continue;
        if (ps[i] == 0)
            ans.pb({i, par[i]});
    }

    for (auto [u, v] : ans)
        cout << u << ' ' << v << '\n';
}

int32_t main(){ 
    ios_base::sync_with_stdio(0); 
    cin.tie(0); 
    cout.tie(0);
    
    int tt = 1;
    while (tt--)
        solve();
    return 0;
}

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

pipes.cpp:13:9: error: 'pii' was not declared in this scope
   13 | vector <pii> ans;
      |         ^~~
pipes.cpp:13:12: error: template argument 1 is invalid
   13 | vector <pii> ans;
      |            ^
pipes.cpp:13:12: error: template argument 2 is invalid
pipes.cpp: In function 'void solve()':
pipes.cpp:77:18: error: 'class std::vector<int>' has no member named 'pb'
   77 |             g[u].pb(v);
      |                  ^~
pipes.cpp:78:18: error: 'class std::vector<int>' has no member named 'pb'
   78 |             g[v].pb(u);
      |                  ^~
pipes.cpp:81:18: error: 'class std::vector<int>' has no member named 'pb'
   81 |             g[u].pb(v);
      |                  ^~
pipes.cpp:82:18: error: 'class std::vector<int>' has no member named 'pb'
   82 |             g[v].pb(u);
      |                  ^~
pipes.cpp:96:17: error: request for member 'pb' in 'ans', which is of non-class type 'int'
   96 |             ans.pb({i, par[i]});
      |                 ^~
pipes.cpp:99:24: error: 'begin' was not declared in this scope
   99 |     for (auto [u, v] : ans)
      |                        ^~~
pipes.cpp:99:24: note: suggested alternatives:
In file included from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:166,
                 from pipes.cpp:1:
/usr/include/c++/13/valarray:1238:5: note:   'std::begin'
 1238 |     begin(const valarray<_Tp>& __va) noexcept
      |     ^~~~~
In file included from /usr/include/c++/13/filesystem:50,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:200:
/usr/include/c++/13/bits/fs_dir.h:607:3: note:   'std::filesystem::__cxx11::begin'
  607 |   begin(recursive_directory_iterator __iter) noexcept
      |   ^~~~~
pipes.cpp:99:24: error: 'end' was not declared in this scope
   99 |     for (auto [u, v] : ans)
      |                        ^~~
pipes.cpp:99:24: note: suggested alternatives:
/usr/include/c++/13/valarray:1265:5: note:   'std::end'
 1265 |     end(const valarray<_Tp>& __va) noexcept
      |     ^~~
/usr/include/c++/13/bits/fs_dir.h:612:3: note:   'std::filesystem::__cxx11::end'
  612 |   end(recursive_directory_iterator) noexcept
      |   ^~~