Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _USE_MATH_DEFINES
- #include <iostream>
- #include <string>
- #include <map>
- #include <set>
- #include <algorithm>
- #include <vector>
- #include <stdio.h>
- #include <cmath>
- #include <math.h>
- #include <queue>
- #include <stack>
- #include <climits>
- #include <deque>
- #include <ctime>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef unsigned int ui;
- #define mh() make_heap()
- #define poph() pop_heap()
- #define pushh() push_heap()
- #define sor(n) n.begin(), n.end()
- #define rsor(n) n.rbegin(), n.rend()
- #define mp make_pair
- #define files freopen("input.txt", "rt", stdin); freopen("output.txt", "wt", stdout)
- #define p(T) pair<T,T>
- #define znac(l) abs(l)/l
- const ll ok = ll(1e9 + 7);
- vector<ll>graf[120];
- ll prnt[120];
- vector<ll>pr;
- ll used[120];
- void dfs(ll top)
- {
- used[top] = 1;
- if (graf[top].size() == 0)
- {
- pr.push_back(top);
- return;
- }
- for (int i = 0; i < graf[top].size(); i++)
- {
- if (!used[graf[top][i]])
- dfs(graf[top][i]);
- }
- pr.push_back(top);
- }
- int main()
- {
- #ifndef ONLINE_JUDGE
- files;
- #endif
- ll n;
- cin >> n;
- for (int i = 1; i <= n; i++)
- {
- ll prom;
- cin >> prom;
- while (prom)
- {
- graf[i].push_back(prom);
- prnt[prom] = i;
- cin >> prom;
- }
- }
- vector<ll>cor;
- for (int i = 1; i <= n; i++)
- {
- if (prnt[i] == 0)
- {
- cor.push_back(i);
- }
- }
- for (int i = 1; i <= n; i++)
- {
- used[i] = 0;
- }
- for (int i = 0; i < cor.size(); i++)
- {
- dfs(cor[i]);
- }
- for (int i = pr.size()-1; i >=0; i--)
- {
- cout << pr[i] << " ";
- }
- //system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement