#include #include #include // Costanti massime #define MAXN 1000000 #define MAXM 2000000 using namespace std; // Variabili, vettori e matrici globali int N, M; int infoMess[MAXM][2]; int acc[MAXN]; vector grafo[MAXM]; vector ciclo; ifstream fin("input.txt"); // File di input ofstream fout("output.txt"); // File di output // Metodo per la ricerca DFS int DFS(int m, int d) { infoMess[m][0] = d + 1; infoMess[m][1] = 1; // Lo è for(int i = 0; i < grafo[m].size(); i++) { if(infoMess[grafo[m][i]][1]) { ciclo.push_back(grafo[m][i]); int tmp = m; ciclo.push_back(tmp); while(tmp != grafo[m][i]) { tmp = infoMess[tmp][0]-1; ciclo.push_back(tmp); } return true; } if(infoMess[grafo[m][i]][0]) { continue; } if(DFS(grafo[m][i],m)) { return true; } } // Operazioni fatte solamente se non c'è stato un return precedente infoMess[m][1] = 0; // Non lo è return false; } int main(void) { fin >> N >> M; // Lettura // Lettura ed opportuno inserimento di tutti i nodi del grafo for(int i = 0; i < M ; i++) { int m, n; // variabili per messaggio e nave fin >> m >> n; // Lettura del messaggio e della nave n += N; // condizione per quale mettere prima if(i