Submission #876887

#TimeUsernameProblemLanguageResultExecution timeMemory
876887hyakupPipes (CEOI15_pipes)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #define bug(x) cout << #x << " " << x << endl; const int maxn = 1e5 + 10; vector<int> v, pai( maxn ), tam( maxn, 1 ), tempo( maxn, -1 ); vector<pair< int, int >> edge( maxn, pair< int, int>( -1, -1 ) ); int _a, _b; int find( int& a ){ return (( a == pai[a] ) ? a : find(pai[a]) ); } bool query( int& a, int& b ){ v.clear(); while( (pai[a] != a || pai[b] != b) && a != b ){ if( tempo[a] > tempo[b] ){ if( edge[a] != make_pair( -1, -1 ) ) v.push_back(a); a = pai[a]; } else{ if( edge[b] != make_pair( -1, -1 ) ) v.push_back(b); b = pai[b]; } } return ( a == b ); } void join( int& a, int& b, int& t ){ _a = find(a); _b = find(b); if( tam[_a] < tam[_b] ) swap( _a, _b ); tam[_a] += tam[_b]; pai[_b] = _a; tempo[_b] = t; edge[_b] = make_pair(a, b); } int main(){ int n, m; cin >> n >> m; for( int i = 1; i <= n; i++ ) pai[i] = i; int a, b; while( m-- ){ cin >> a >> b; if( !query( a, b ) ) join( a, b, m + 10 ); else for( int x : v ) edge[x] = make_pair( -1, -1 ); } for( int i = 1; i <= n; i++ ){ if( edge[i] != make_pair( -1, -1 ) ) cout << edge[i].first << " " << edge[i].second << endl; } }

Compilation message (stderr)

pipes.cpp: In function 'int main()':
pipes.cpp:43:47: error: cannot bind non-const lvalue reference of type 'int&' to an rvalue of type 'int'
   43 |           if( !query( a, b ) ) join( a, b, m  + 10 );
      |                                            ~~~^~~~
pipes.cpp:27:33: note:   initializing argument 3 of 'void join(int&, int&, int&)'
   27 | void join( int& a, int& b, int& t ){
      |                            ~~~~~^