Cod sursa(job #2310111)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 30 decembrie 2018 16:50:16
Problema Ciclu Eulerian Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std ;


ifstream f ( "euler.in" ) ;
ofstream g ( "euler.out" ) ;


const int NR = 262145 ;
int n , cnt ;

vector < bool > viz ( NR , false ) ;
vector < bool > close ( NR , false ) ;
vector < int >  father ( NR , 0 ) ;

int main ()
{
  f >> n ;
  int x , y , i , frst ;

  f >> x ;
  frst = x ;
  father [ frst ] = 0 ;
  viz [ x ] = true ;
  while ( f >> y )
  {
      if ( x == y ) return g <<  "NU" , 0 ;
      if ( close [ y ] )    { g << "NU" ; return 0 ; }
      if ( !viz [ y ] )         viz [ y ] = true , father [ y ] = x ;
        else                    if ( father [ x ] == y )    close [ x ] = true ;
    x = y ;

  }

  if ( x == frst )
  {
      close [ x ] = true ;
      for ( i = 1 ; i <= n ; ++ i )  if ( !close [ i ] ) { g << "NU" ; return 0 ; }
      g << "DA\n" ;
      for ( i = 1 ; i <= n ; ++ i ) g << father [ i ] << " " ;
      return 0 ;
  }

  g << "NU" ;

    return 0 ;
}