Submission #136377

# Submission time Handle Problem Language Result Execution time Memory
136377 2019-07-25T08:04:00 Z tdwn Senior Postmen (BOI14_postmen) C++17
55 / 100
500 ms 82448 KB
#include <bits/stdc++.h>
#define ll long long 
#define pb push_back
#define pf push_front
#define mp make_pair
using namespace std;
const int maxn = 500100;

class edge {
public:
	int nxt_node;
	list<edge>::iterator reverse_edge;

	edge(int _node) {
		nxt_node = _node;
	}
};

list<edge>adj[maxn];
int n, m;

vector<int>euler_tour;
bool visited[maxn];

void solve(int node) {
	while(adj[node].size() > 0) {
		edge x = adj[node].front();
		int nxt = x.nxt_node;

		adj[nxt].erase(x.reverse_edge);
		adj[node].pop_front();

		solve(nxt);
	}
	euler_tour.pb(node);
}

int main() {
	cin>>n>>m;

	int a, b;
	for(int i=0;i<m;i++) {
		cin>>a>>b;
		
		adj[a].pf(edge(b));
		list<edge>::iterator it_a = adj[a].begin();
		adj[b].pf(edge(a));
		list<edge>::iterator it_b = adj[b].begin();

		it_a->reverse_edge = it_b;
		it_b->reverse_edge = it_a;
	}
	solve(1);

	vector<int>seq;
	for(int i:euler_tour) {
		//cout<<i<<" ";
		if(!visited[i]) {
			seq.pb(i);
			visited[i] = true;
		}
		else {
			// go back in seq while you find i
			while(seq.size() > 0 && seq.back() != i) {
				visited[seq.back()] = false;
				cout<<seq.back()<<" ";
				seq.pop_back();
			} cout<<i<<"\n";
		}
	} 
}
# Verdict Execution time Memory Grader output
1 Correct 14 ms 12008 KB Output is correct
2 Correct 14 ms 12032 KB Output is correct
3 Correct 18 ms 12032 KB Output is correct
4 Correct 14 ms 12412 KB Output is correct
5 Correct 14 ms 12340 KB Output is correct
6 Correct 14 ms 12672 KB Output is correct
7 Correct 32 ms 14184 KB Output is correct
8 Correct 16 ms 12288 KB Output is correct
9 Correct 119 ms 26128 KB Output is correct
10 Correct 15 ms 12416 KB Output is correct
11 Correct 17 ms 12416 KB Output is correct
12 Correct 127 ms 26160 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 14 ms 12032 KB Output is correct
2 Correct 13 ms 12032 KB Output is correct
3 Correct 13 ms 12080 KB Output is correct
4 Correct 20 ms 12416 KB Output is correct
5 Correct 12 ms 12288 KB Output is correct
6 Correct 20 ms 12672 KB Output is correct
7 Correct 25 ms 14208 KB Output is correct
8 Correct 17 ms 12416 KB Output is correct
9 Correct 112 ms 26104 KB Output is correct
10 Correct 15 ms 12416 KB Output is correct
11 Correct 15 ms 12416 KB Output is correct
12 Correct 136 ms 26104 KB Output is correct
13 Correct 211 ms 26104 KB Output is correct
14 Correct 181 ms 24308 KB Output is correct
15 Correct 140 ms 26104 KB Output is correct
16 Correct 173 ms 26076 KB Output is correct
17 Correct 176 ms 23052 KB Output is correct
18 Correct 170 ms 25656 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 14 ms 12032 KB Output is correct
2 Correct 11 ms 12032 KB Output is correct
3 Correct 13 ms 12032 KB Output is correct
4 Correct 16 ms 12544 KB Output is correct
5 Correct 13 ms 12160 KB Output is correct
6 Correct 15 ms 12672 KB Output is correct
7 Correct 26 ms 14208 KB Output is correct
8 Correct 14 ms 12288 KB Output is correct
9 Correct 123 ms 26088 KB Output is correct
10 Correct 18 ms 12416 KB Output is correct
11 Correct 15 ms 12416 KB Output is correct
12 Correct 128 ms 26132 KB Output is correct
13 Correct 169 ms 26080 KB Output is correct
14 Correct 168 ms 24196 KB Output is correct
15 Correct 147 ms 26140 KB Output is correct
16 Correct 167 ms 26080 KB Output is correct
17 Correct 178 ms 23052 KB Output is correct
18 Correct 167 ms 25712 KB Output is correct
19 Execution timed out 926 ms 82448 KB Time limit exceeded
20 Halted 0 ms 0 KB -