Submission #40424

#TimeUsernameProblemLanguageResultExecution timeMemory
40424MladenPPipes (CEOI15_pipes)C++14
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> #define STIZE(x) fprintf(stderr, "STIZE%d\n", x); #define PRINT(x) fprintf(stderr, "%s = %d\n", #x, x); #define NL(x) printf("%c", " \n"[(x)]); #define lld long long #define pii pair<int,int> #define pb push_back #define fi first #define se second #define mid (l+r)/2 #define endl '\n' #define all(a) begin(a),end(a) #define sz(a) int((a).size()) #define LINF 1000000000000000LL #define INF 1000000000 #define EPS 1e-9 using namespace std; #define MAXN 30010 vector<unsigned short> adj[MAXN]; int dsu[MAXN], fup[MAXN], in[MAXN], out[MAXN], timer = 0; bool pos[MAXN]; map<pair<short, short> > e; int root(int x) { while(x != dsu[x]) { dsu[x] = dsu[dsu[x]]; x = dsu[x]; } return x; } void build(int node, int prev) { pos[node] = 1; in[node] = fup[node] = ++timer; for(auto x : adj[node]) { if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--; } out[node] = ++timer; } bool inSubtree(int x, int y) { //da li je y u subtree x return (in[x] < in[y] && out[x] > out[y]); } bool backEdge(int x, int y) { if(e.count({x, y}) == 0) return 0; if(!inSubtree(x, y)) return 0; if(root(x) != root(y)) return 0; return 1; } int build1(int node, int prev) { pos[node] = 1; for(auto x : adj[node]) { if(x != prev && !pos[x]) { fup[node] = min(fup[node], build1(x, node)); } if(fup[x] > in[node]) { printf("%d %d\n", node, x); } } return fup[node]; } int main() { int n, m; scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) dsu[i] = i; for(int i = 0; i < m; i++) { unsigned short x, y; scanf("%hu%hu", &x, &y); adj[x].pb(y); adj[y].pb(x); e[{min(x,y), max(x,y)}]++; if(root(x) != root(y)) { dsu[root(x)] = root(y); } } for(int i = 1; i <= n; i++) if(!pos[i]) build(i, i); for(int i = 1; i <= n; i++) { for(auto x : adj[i]) { if(backEdge(x, i)) { fup[i] = min(fup[i], in[x]); } else if(backEdge(i, x)) { fup[x] = min(in[i], fup[x]); } } } for(int i = 1; i <= n; i++) pos[i] = 0; for(int i = 1; i <= n; i++) if(!pos[i]) build1(i, i); return 0; }

Compilation message (stderr)

pipes.cpp:22:24: error: wrong number of template arguments (1, should be at least 2)
 map<pair<short, short> > e;
                        ^
In file included from /usr/include/c++/7/map:61:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:81,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_map.h:99:11: note: provided for 'template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map'
     class map
           ^~~
pipes.cpp: In function 'void build(int, int)':
pipes.cpp:34:63: error: no matching function for call to 'min(int&, short unsigned int&)'
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                               ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)
     min(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:195:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:63: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'short unsigned int')
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                               ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:243:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)
     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:243:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:63: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'short unsigned int')
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                               ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3450:5: note: candidate: template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)
     min(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3450:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:63: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                               ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3456:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3456:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:63: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                               ^
pipes.cpp:34:75: error: no matching function for call to 'max(int&, short unsigned int&)'
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                                           ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:219:5: note: candidate: template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)
     max(const _Tp& __a, const _Tp& __b)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:219:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:75: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'short unsigned int')
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                                           ^
In file included from /usr/include/c++/7/bits/char_traits.h:39:0,
                 from /usr/include/c++/7/ios:40,
                 from /usr/include/c++/7/istream:38,
                 from /usr/include/c++/7/sstream:38,
                 from /usr/include/c++/7/complex:45,
                 from /usr/include/c++/7/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:52,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algobase.h:265:5: note: candidate: template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)
     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algobase.h:265:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:75: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'short unsigned int')
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                                           ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3462:5: note: candidate: template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)
     max(initializer_list<_Tp> __l)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3462:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                                           ^
In file included from /usr/include/c++/7/algorithm:62:0,
                 from /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h:65,
                 from pipes.cpp:1:
/usr/include/c++/7/bits/stl_algo.h:3468:5: note: candidate: template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)
     max(initializer_list<_Tp> __l, _Compare __comp)
     ^~~
/usr/include/c++/7/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
pipes.cpp:34:75: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                                           ^
pipes.cpp:34:77: error: invalid types 'int[<brace-enclosed initializer list>]' for array subscript
         if(x != prev && !pos[x]) build(x, node), e[{min(node,x),max(node,x)}]--;
                                                                             ^
pipes.cpp: In function 'bool backEdge(int, int)':
pipes.cpp:43:10: error: request for member 'count' in 'e', which is of non-class type 'int'
     if(e.count({x, y}) == 0) return 0;
          ^~~~~
pipes.cpp: In function 'int main()':
pipes.cpp:67:31: error: invalid types 'int[<brace-enclosed initializer list>]' for array subscript
         e[{min(x,y), max(x,y)}]++;
                               ^
pipes.cpp:61:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     int n, m; scanf("%d%d", &n, &m);
               ~~~~~^~~~~~~~~~~~~~~~
pipes.cpp:64:35: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         unsigned short x, y; scanf("%hu%hu", &x, &y);
                              ~~~~~^~~~~~~~~~~~~~~~~~