Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <set>
- #include <map>
- #include <utility>
- #include <vector>
- #include <algorithm>
- #include <string>
- #include <iostream>
- USING namespace std;
- #define mp make_pair
- #define pb push_back
- #define sz(a) INT((a).size())
- #define forn(i, n) FOR (INT i=0; i<(INT)(n); ++i)
- typedef pair<INT,int> pii;
- typedef LONG LONG ll;
- typedef LONG DOUBLE ld;
- CONST INT maxn = 300010;
- INT n, m;
- vector<int> gs[maxn], gt[maxn];
- INT path[maxn], kp, where[maxn];
- INT outc[maxn], inc[maxn], pmax[maxn], nmax[maxn];
- INT a, b, u[maxn];
- INT order[maxn], ko;
- void dfs( INT i )
- {
- u[i] = 1;
- forn( j, gt[i].size() )
- IF ( !u[ gt[i][j] ] )
- dfs( gt[i][j] );
- order[ko++] = i;
- }
- INT main()
- {
- freopen("i.in", "r", stdin);
- freopen("i.out", "w", stdout);
- INT tc;
- scanf( "%d", &tc );
- WHILE ( tc-- )
- {
- scanf( "%d %d", &n, &m );
- forn( i, n ) gs[i].CLEAR(), inc[i] = outc[i] = 0;
- forn( i, m )
- {
- scanf( "%d %d", &a, &b );
- a--, b--;
- gs[a].pb( b );
- inc[b]++;
- outc[a]++;
- }
- forn( i, 3*n ) gt[i].CLEAR(), u[i] = false;
- forn( i, n )
- forn( j, gs[i].size() )
- {
- INT x = i;
- INT y = gs[i][j];
- IF ( y < i ) y += n;
- WHILE ( y < 3*n )
- {
- gt[x].pb( y );
- x += n, y += n;
- }
- }
- ko = 0;
- forn( i, 3*n )
- IF ( !u[i] ) dfs( i );
- reverse( order, order+3*n );
- kp = 0;
- forn( i, 3*n )
- IF ( order[i] >= n && order[i] < n+n )
- path[kp++] = order[i] - n;
- forn( i, n ) where[ path[i] ] = i, nmax[i] = pmax[i] = 0;
- forn( i, n )
- forn( j, gs[i].size() )
- {
- INT a = where[i];
- INT b = where[ gs[i][j] ];
- INT d = b-a;
- IF ( d < 0 ) d += n;
- nmax[a] = max( nmax[a], d );
- pmax[b] = max( pmax[b], d );
- }
- bool ok = true;
- forn( i, n )
- IF ( pmax[i] > inc[i] || nmax[i] > outc[i] )
- ok = false;
- IF ( ok )
- {
- forn( i, n )
- {
- IF ( i ) printf( " " );
- printf( "%d", path[i]+1 );
- }
- printf( "\n" );
- }
- ELSE printf( "Epic fail\n" );
- }
- RETURN 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement