#include <iostream>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
vector<bool> is_in_stack, visited;
vector<vector<int>> adj;
stack<int> ordered;
void DFS(int node)
{
is_in_stack[node] = true;
visited[node] = true;
for(int i = 0; i < adj[node].size(); i++){
int newNode = adj[node][i];
if(is_in_stack[newNode]){
cout << "NEM";
exit(0);
}
if(!visited[newNode]){
DFS(newNode);
}
}
ordered.push(node);
is_in_stack[node] = false;
}
int main()
{
int N, M;
cin >> N >> M;
adj.resize(2*N+2);
is_in_stack.assign(2*N+2, false);
visited.assign(2*N+2, false);
for(int i = 1; i <= N; i++){
adj[i].push_back(i+N);
}
for(int i = 0; i < M; i++){
int tipus, u, v;
cin >> tipus >> u >> v;
//u az intervallum kezdetet, u+N a veget mutato csomopont
if(tipus == 1){
adj[v].push_back(u+N);
adj[u].push_back(v+N);
}
else{
adj[u+N].push_back(v);
}
}
for(int i = 1; i <= N; i++){
if(!visited[i]){
DFS(i);
}
}
vector<int> left(N+1), right(N+1);
int index = 1;
while(!ordered.empty()){
int node = ordered.top();
ordered.pop();
if(node > N){
right[node - N] = index;
}
else{
left[node] = index;
}
index++;
}
cout << "IGEN\n";
for(int i = 1; i <= N; i++){
cout << left[i] << " " << right[i] << endl;
}
return 0;
}
/*
ha eltek egyutt: ru >= lv && lu <= rv <=> lv <= ru && lu <= rv
ha u a v elott elt: ru <= lv
*/
| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Accepted | 1ms | 500 KiB | ||||
| 2 | Accepted | 1ms | 316 KiB | ||||
| 3 | Accepted | 6ms | 820 KiB | ||||
| subtask2 | 5/5 | ||||||
| 4 | Accepted | 294ms | 11828 KiB | ||||
| 5 | Accepted | 246ms | 11224 KiB | ||||
| 6 | Accepted | 209ms | 11060 KiB | ||||
| subtask3 | 15/15 | ||||||
| 7 | Accepted | 1ms | 316 KiB | ||||
| 8 | Accepted | 1ms | 316 KiB | ||||
| 9 | Accepted | 1ms | 316 KiB | ||||
| 10 | Accepted | 1ms | 508 KiB | ||||
| 11 | Accepted | 1ms | 548 KiB | ||||
| 12 | Accepted | 1ms | 316 KiB | ||||
| subtask4 | 10/10 | ||||||
| 13 | Accepted | 1ms | 316 KiB | ||||
| 14 | Accepted | 1ms | 500 KiB | ||||
| 15 | Accepted | 1ms | 508 KiB | ||||
| 16 | Accepted | 1ms | 316 KiB | ||||
| 17 | Accepted | 1ms | 316 KiB | ||||
| subtask5 | 35/35 | ||||||
| 18 | Accepted | 1ms | 412 KiB | ||||
| 19 | Accepted | 3ms | 316 KiB | ||||
| 20 | Accepted | 282ms | 12940 KiB | ||||
| 21 | Accepted | 284ms | 12956 KiB | ||||
| 22 | Accepted | 1ms | 316 KiB | ||||
| 23 | Accepted | 2ms | 316 KiB | ||||
| 24 | Accepted | 111ms | 10024 KiB | ||||
| subtask6 | 35/35 | ||||||
| 25 | Accepted | 342ms | 11824 KiB | ||||
| 26 | Accepted | 312ms | 11804 KiB | ||||
| 27 | Accepted | 312ms | 11872 KiB | ||||
| 28 | Accepted | 340ms | 11932 KiB | ||||
| 29 | Accepted | 144ms | 9364 KiB | ||||
| 30 | Accepted | 340ms | 12084 KiB | ||||
| 31 | Accepted | 314ms | 11944 KiB | ||||
| 32 | Accepted | 120ms | 9564 KiB | ||||
| 33 | Accepted | 133ms | 9892 KiB | ||||
| 34 | Accepted | 282ms | 11964 KiB | ||||
| 35 | Accepted | 148ms | 9012 KiB | ||||