Submission #86699

#TimeUsernameProblemLanguageResultExecution timeMemory
86699PancakePipes (CEOI15_pipes)C++14
0 / 100
384 ms65536 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,sse3,sse4,popcnt,abm,mmx") #include <bits/stdc++.h> #include <stdio.h> using namespace std; #define F first #define S second #define lb lower_bound #define ub upper_bound #define pb push_back #define pf push_front #define ppb pop_back #define mp make_pair #define bpp __builtin_popcount #define sqr(x) ((x) * (x)) #define al 0x3F3F3F3F #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define in insert #define ppf pop_front #define endl '\n' //#define int long long typedef unsigned long long ull; typedef long long ll; typedef long double ld; typedef pair <int, int> pii; const int mod = (int)1e9 + 7; const int N = (int)3e4 + 123; const ll inf = (ll)3e18 + 1; const double pi = acos(-1.0); const double eps = 1e-7; const int dx[] = {0, 0, 1, 0, -1}; const int dy[] = {0, 1, 0, -1, 0}; int n, m, tin[N], fup[N], timer; bool used[N]; set <pii> ans; int u[N * 10 + (int)3e4]; bitset <N> g[N]; void dfs (int v, int p = 0) { used[v] = 1; tin[v] = fup[v] = ++ timer; int ok = 0; for (int to = g[v]._Find_first (); to < sz (g[v]); to = g[v]._Find_next (to)) { int how = min (u[v * 10 + to], 3); while (how --) { if (to == p) { // if (u[to * 10 + v] == -1) { // fup[v] = min (fup[v], tin[to]); // } if (!ok) { ok ++; continue; } } // cout << v << ' ' << to << endl; if (used[to]) fup[v] = min (fup[v], tin[to]); else { dfs (to, v); fup[v] = min (fup[v], fup[to]); if (fup[to] > tin[v]) { // if (u[to * 10 + v] == -1) continue; ans.in ({min (v, to), max (v, to)}); } } } } } inline void boost () { ios_base :: sync_with_stdio (NULL); cin.tie (NULL), cout.tie (NULL); } inline void Solve () { cin >> n >> m; while (m --) { int x, y; cin >> x >> y; if (x == y) continue; // if (u[x * 10 + y] == -1 || u[y * 10 + x] == -1) continue; u[x * 10 + y] ++, u[y * 10 + x] ++; // if (u[x * 10 + y] > 1) { // u[x * 10 + y] = u[y * 10 + x] = -1; // continue; // } g[x][y] = g[y][x] = 1; } for (int i = 1; i <= n; i ++) if (!used[i]) dfs (i); for (auto to : ans) cout << to.F << ' ' << to.S << endl; } main () { // freopen ("gcm.in", "r", stdin); // freopen ("gcm.out", "w", stdout); boost (); int tt = 1; // cin >> tt; while (tt --) { Solve (); } return 0; }

Compilation message (stderr)

pipes.cpp:103:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {                                       
       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...