#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
void * wmem;
char memarr[ 96000000 ] ;
template < class T> inline void walloc1d( T ** arr, int x, void ** mem = & wmem) {
static int skip[ 16 ] = { 0 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 } ;
( * mem) = ( void * ) ( ( ( char * ) ( * mem) ) + skip[ ( ( unsigned long long ) ( * mem) ) & 15 ] ) ;
( * arr) = ( T* ) ( * mem) ;
( * mem) = ( ( * arr) + x) ;
}
template < class T> inline void walloc1d( T ** arr, int x1, int x2, void ** mem = & wmem) {
walloc1d( arr, x2- x1, mem) ;
( * arr) - = x1;
}
struct graph{
int N;
int * es;
int ** edge;
void setDirectEdge( int N__, int M, int A[ ] , int B[ ] , void ** mem = & wmem) {
int i;
N = N__;
walloc1d( & es, N, mem) ;
walloc1d( & edge, N, mem) ;
walloc1d( & edge[ 0 ] , M, mem) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
es[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
es[ A[ i] ] ++ ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
walloc1d( & edge[ i] , es[ i] , mem) ;
}
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
es[ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( M) ; i++ ) {
edge[ A[ i] ] [ es[ A[ i] ] ++ ] = B[ i] ;
}
}
void getDist( int root, int res[ ] , void * mem = wmem) {
int i;
int j;
int k;
int * q;
int s;
int z;
walloc1d( & q, N, & mem) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
res[ i] = - 1 ;
}
res[ root] = 0 ;
s= 0 ;
z= 1 ;
q[ 0 ] = root;
while ( z) {
i= q[ s++ ] ;
z-- ;
for ( j= ( 0 ) ; j< ( es[ i] ) ; j++ ) {
k= edge[ i] [ j] ;
if ( res[ k] >= 0 ) {
continue ;
}
res[ k] = res[ i] + 1 ;
q[ s+ z++ ] = k;
}
}
}
int getDist( int a, int b, void * mem = wmem) {
int i;
int j;
int k;
int * q;
int s;
int z;
int * d;
if ( a== b) {
return 0 ;
}
walloc1d( & d, N, & mem) ;
walloc1d( & q, N, & mem) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
d[ i] = - 1 ;
}
d[ a] = 0 ;
s = 0 ;
z = 1 ;
q[ 0 ] = a;
while ( z) {
i = q[ s++ ] ;
z-- ;
for ( j= ( 0 ) ; j< ( es[ i] ) ; j++ ) {
k = edge[ i] [ j] ;
if ( d[ k] >= 0 ) {
continue ;
}
d[ k] = d[ i] + 1 ;
if ( k== b) {
return d[ k] ;
}
q[ s+ z++ ] = k;
}
}
return - 1 ;
}
}
;
template < class T, class S> inline int vec2arr( vector< T> & v, S arr[ ] ) {
int i;
int N = v.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr[ i] = v[ i] ;
}
return N;
}
template < class T, class S1, class S2> inline int vec2arr( vector< vector< T>> & v, S1 arr1[ ] , S2 arr2[ ] ) {
int i;
int N = v.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr1[ i] = v[ i] [ 0 ] ;
arr2[ i] = v[ i] [ 1 ] ;
}
return N;
}
template < class T, class S1, class S2, class S3> inline int vec2arr( vector< vector< T>> & v, S1 arr1[ ] , S2 arr2[ ] , S3 arr3[ ] ) {
int i;
int N = v.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
arr1[ i] = v[ i] [ 0 ] ;
arr2[ i] = v[ i] [ 1 ] ;
arr3[ i] = v[ i] [ 2 ] ;
}
return N;
}
#define main dummy_main
int main( ) {
wmem = memarr;
return 0 ;
}
#undef main
class Solution{
public :
int findChampion( int n, vector< vector< int >> & edges) {
int i;
dummy_main( ) ;
graph g;
static int m;
static int a[ 100000 ] ;
static int b[ 100000 ] ;
static int d[ 100000 ] ;
m = vec2arr( edges, a, b) ;
g.setDirectEdge ( n,m,a,b) ;
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
g.getDist ( i, d) ;
int WKqLrJHZ;
remove_reference< decltype( 1 ) > :: type QAAnbtfa;
int om7Ebh6q = 0 ;
if ( ( 0 ) > ( ( n) - 1 ) ) {
QAAnbtfa = 0 ;
}
else {
for ( WKqLrJHZ = 0 ; WKqLrJHZ <= ( n) - 1 ; WKqLrJHZ++ ) {
if ( d[ WKqLrJHZ] >= 0 ) {
if ( om7Ebh6q == 0 ) {
QAAnbtfa = 1 ;
om7Ebh6q = 1 ;
continue ;
}
QAAnbtfa + = 1 ;
}
}
if ( om7Ebh6q== 0 ) {
QAAnbtfa = 0 ;
}
}
if ( QAAnbtfa== n) {
return i;
}
}
return - 1 ;
}
}
;
// cLay version 20231031-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int findChampion(int n, VVI &edges) {
// dummy_main();
// graph g;
// static int m, a[1d5], b[], d[];
// m = vec2arr(edges, a, b);
// g.setDirectEdge(n,m,a,b);
// rep(i,n){
// g.getDist(i, d);
// if(sum[j,0,n @ d[j]>=0](1) == n) return i;
// }
// return -1;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJpbmxpbmUiKQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkKndtZW07CmNoYXIgbWVtYXJyWzk2MDAwMDAwXTsKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgd2FsbG9jMWQoVCAqKmFyciwgaW50IHgsIHZvaWQgKiptZW0gPSAmd21lbSl7CiAgc3RhdGljIGludCBza2lwWzE2XSA9IHswLCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxfTsKICAoKm1lbSkgPSAodm9pZCopKCAoKGNoYXIqKSgqbWVtKSkgKyBza2lwWygodW5zaWduZWQgbG9uZyBsb25nKSgqbWVtKSkgJiAxNV0gKTsKICAoKmFycik9KFQqKSgqbWVtKTsKICAoKm1lbSk9KCgqYXJyKSt4KTsKfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCB3YWxsb2MxZChUICoqYXJyLCBpbnQgeDEsIGludCB4Miwgdm9pZCAqKm1lbSA9ICZ3bWVtKXsKICB3YWxsb2MxZChhcnIsIHgyLXgxLCBtZW0pOwogICgqYXJyKSAtPSB4MTsKfQpzdHJ1Y3QgZ3JhcGh7CiAgaW50IE47CiAgaW50KmVzOwogIGludCoqZWRnZTsKICB2b2lkIHNldERpcmVjdEVkZ2UoaW50IE5fXywgaW50IE0sIGludCBBW10sIGludCBCW10sIHZvaWQgKiptZW0gPSAmd21lbSl7CiAgICBpbnQgaTsKICAgIE4gPSBOX187CiAgICB3YWxsb2MxZCgmZXMsIE4sIG1lbSk7CiAgICB3YWxsb2MxZCgmZWRnZSwgTiwgbWVtKTsKICAgIHdhbGxvYzFkKCZlZGdlWzBdLCBNLCBtZW0pOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGVzW2ldID0gMDsKICAgIH0KICAgIGZvcihpPSgwKTtpPChNKTtpKyspewogICAgICBlc1tBW2ldXSsrOwogICAgfQogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIHdhbGxvYzFkKCZlZGdlW2ldLCBlc1tpXSwgbWVtKTsKICAgIH0KICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICBlc1tpXSA9IDA7CiAgICB9CiAgICBmb3IoaT0oMCk7aTwoTSk7aSsrKXsKICAgICAgZWRnZVtBW2ldXVtlc1tBW2ldXSsrXSA9IEJbaV07CiAgICB9CiAgfQogIHZvaWQgZ2V0RGlzdChpbnQgcm9vdCwgaW50IHJlc1tdLCB2b2lkICptZW0gPSB3bWVtKXsKICAgIGludCBpOwogICAgaW50IGo7CiAgICBpbnQgazsKICAgIGludCpxOwogICAgaW50IHM7CiAgICBpbnQgejsKICAgIHdhbGxvYzFkKCZxLCBOLCAmbWVtKTsKICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICByZXNbaV09LTE7CiAgICB9CiAgICByZXNbcm9vdF09MDsKICAgIHM9MDsKICAgIHo9MTsKICAgIHFbMF09cm9vdDsKICAgIHdoaWxlKHopewogICAgICBpPXFbcysrXTsKICAgICAgei0tOwogICAgICBmb3Ioaj0oMCk7ajwoZXNbaV0pO2orKyl7CiAgICAgICAgaz1lZGdlW2ldW2pdOwogICAgICAgIGlmKHJlc1trXT49MCl7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgcmVzW2tdPXJlc1tpXSsxOwogICAgICAgIHFbcyt6KytdPWs7CiAgICAgIH0KICAgIH0KICB9CiAgaW50IGdldERpc3QoaW50IGEsIGludCBiLCB2b2lkICptZW0gPSB3bWVtKXsKICAgIGludCBpOwogICAgaW50IGo7CiAgICBpbnQgazsKICAgIGludCpxOwogICAgaW50IHM7CiAgICBpbnQgejsKICAgIGludCpkOwogICAgaWYoYT09Yil7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgd2FsbG9jMWQoJmQsIE4sICZtZW0pOwogICAgd2FsbG9jMWQoJnEsIE4sICZtZW0pOwogICAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICAgIGRbaV0gPSAtMTsKICAgIH0KICAgIGRbYV0gPSAwOwogICAgcyA9IDA7CiAgICB6ID0gMTsKICAgIHFbMF0gPSBhOwogICAgd2hpbGUoeil7CiAgICAgIGkgPSBxW3MrK107CiAgICAgIHotLTsKICAgICAgZm9yKGo9KDApO2o8KGVzW2ldKTtqKyspewogICAgICAgIGsgPSBlZGdlW2ldW2pdOwogICAgICAgIGlmKGRba10gPj0gMCl7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZFtrXSA9IGRbaV0gKyAxOwogICAgICAgIGlmKGs9PWIpewogICAgICAgICAgcmV0dXJuIGRba107CiAgICAgICAgfQogICAgICAgIHFbcyt6KytdID0gazsKICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwogIH0KfQo7CnRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFM+IGlubGluZSBpbnQgdmVjMmFycih2ZWN0b3I8VD4gJnYsIFMgYXJyW10pewogIGludCBpOwogIGludCBOID0gdi5zaXplKCk7CiAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICBhcnJbaV0gPSB2W2ldOwogIH0KICByZXR1cm4gTjsKfQp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTMSwgY2xhc3MgUzI+IGlubGluZSBpbnQgdmVjMmFycih2ZWN0b3I8dmVjdG9yPFQ+PiAmdiwgUzEgYXJyMVtdLCBTMiBhcnIyW10pewogIGludCBpOwogIGludCBOID0gdi5zaXplKCk7CiAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICBhcnIxW2ldID0gdltpXVswXTsKICAgIGFycjJbaV0gPSB2W2ldWzFdOwogIH0KICByZXR1cm4gTjsKfQp0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTMSwgY2xhc3MgUzIsIGNsYXNzIFMzPiBpbmxpbmUgaW50IHZlYzJhcnIodmVjdG9yPHZlY3RvcjxUPj4gJnYsIFMxIGFycjFbXSwgUzIgYXJyMltdLCBTMyBhcnIzW10pewogIGludCBpOwogIGludCBOID0gdi5zaXplKCk7CiAgZm9yKGk9KDApO2k8KE4pO2krKyl7CiAgICBhcnIxW2ldID0gdltpXVswXTsKICAgIGFycjJbaV0gPSB2W2ldWzFdOwogICAgYXJyM1tpXSA9IHZbaV1bMl07CiAgfQogIHJldHVybiBOOwp9CiNkZWZpbmUgbWFpbiBkdW1teV9tYWluCmludCBtYWluKCl7CiAgd21lbSA9IG1lbWFycjsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IGZpbmRDaGFtcGlvbihpbnQgbiwgdmVjdG9yPHZlY3RvcjxpbnQ+PiAmZWRnZXMpewogICAgaW50IGk7CiAgICBkdW1teV9tYWluKCk7CiAgICBncmFwaCBnOwogICAgc3RhdGljIGludCBtOwogICAgc3RhdGljIGludCBhWzEwMDAwMF07CiAgICBzdGF0aWMgaW50IGJbMTAwMDAwXTsKICAgIHN0YXRpYyBpbnQgZFsxMDAwMDBdOwogICAgbSA9IHZlYzJhcnIoZWRnZXMsIGEsIGIpOwogICAgZy5zZXREaXJlY3RFZGdlKG4sbSxhLGIpOwogICAgZm9yKGk9KDApO2k8KG4pO2krKyl7CiAgICAgIGcuZ2V0RGlzdChpLCBkKTsKICAgICAgaW50IFdLcUxySkhaOwogICAgICByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKDEpPjo6dHlwZSBRQUFuYnRmYTsKICAgICAgaW50IG9tN0ViaDZxID0gMDsKICAgICAgaWYoKDApID4gKChuKS0xKSl7CiAgICAgICAgUUFBbmJ0ZmEgPSAwOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgZm9yKFdLcUxySkhaID0gMDsgV0txTHJKSFogPD0gKG4pLTE7IFdLcUxySkhaKyspewogICAgICAgICAgaWYoZFtXS3FMckpIWl0+PTApewogICAgICAgICAgICBpZihvbTdFYmg2cSA9PSAwKXsKICAgICAgICAgICAgICBRQUFuYnRmYSA9IDE7CiAgICAgICAgICAgICAgb203RWJoNnEgPSAxOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFFBQW5idGZhICs9IDE7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKG9tN0ViaDZxPT0wKXsKICAgICAgICAgIFFBQW5idGZhID0gMDsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYoUUFBbmJ0ZmE9PSBuKXsKICAgICAgICByZXR1cm4gaTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIC0xOwogIH0KfQo7Ci8vIGNMYXkgdmVyc2lvbiAyMDIzMTAzMS0xCgovLyAtLS0gb3JpZ2luYWwgY29kZSAtLS0KLy8gI2RlZmluZSBtYWluIGR1bW15X21haW4KLy8ge30KLy8gI3VuZGVmIG1haW4KLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGludCBmaW5kQ2hhbXBpb24oaW50IG4sIFZWSSAmZWRnZXMpIHsKLy8gICAgIGR1bW15X21haW4oKTsKLy8gICAgIGdyYXBoIGc7Ci8vICAgICBzdGF0aWMgaW50IG0sIGFbMWQ1XSwgYltdLCBkW107Ci8vICAgICBtID0gdmVjMmFycihlZGdlcywgYSwgYik7Ci8vICAgICBnLnNldERpcmVjdEVkZ2UobixtLGEsYik7Ci8vICAgICByZXAoaSxuKXsKLy8gICAgICAgZy5nZXREaXN0KGksIGQpOwovLyAgICAgICBpZihzdW1baiwwLG4gQCBkW2pdPj0wXSgxKSA9PSBuKSByZXR1cm4gaTsKLy8gICAgIH0KLy8gICAgIHJldHVybiAtMTsKLy8gICB9Ci8vIH07Cg==