Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- map <ll, vector <ll> > a; // все вершины и для каждой список вершин, куда можно попасть
- map <ll, bool> visited; // массив уже посещенных вершин
- //void dfs (ll s) {
- // if (visited[s]) return;
- // visited[s] = true;
- // for (ll i = 0; i < a[s].size(); ++i) {
- // dfs(a[s][i]);
- // }
- //}
- ll k;
- bool cmp(vector <ll> a, vector <ll> b) {
- for (ll i = 0; i < k; ++i) {
- if (i >= a.size() || i >= b.size()) return a.size()<b.size();
- if (a[i] != b[i]) return a[i] < b[i];
- }
- }
- int main()
- {
- ios::sync_with_stdio(0);
- cin.tie(0);
- ll n, m; //количество вершин
- cin >> n >> m;
- ll c1, c2; // из 1 есть дорога в 2
- for (ll i = 0; i < m; ++i) {
- cin >> c1 >> c2;
- a[c1].push_back(c2);
- a[c2].push_back(c1);
- visited[c1] = false;
- visited[c2] = false;
- }
- cin >> k;
- ll tmp;
- vector <ll> b[k];
- for (ll i = 0; i < k; ++i) {
- cin >> tmp;
- while (tmp != 0) {
- b[i].push_back(tmp);
- cin >> tmp;
- }
- }
- for (ll i = 0; i < k; ++i) {
- if (b[i][0] > b[i][b[i].size()-1]) {
- reverse(b[i].begin(), b[i].end());
- }
- }
- sort(b, b+k, cmp);
- for (ll i = 0; i < k; ++i) {
- for (ll j = 0; j < b[i].size(); ++j) {
- cout << b[i][j] << " ";
- } cout << "\n";
- }
- //dfs();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement