Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <math.h>
- using namespace std;
- vector<int> arr[110];
- vector<int> col(110), cont;
- bool used[110];
- int err = 0;
- void paint(int v, int color) {
- used[v] = true;
- col[v] = color;
- for (int i = 0; i < arr[v].size(); ++i) {
- if (col[arr[v][i]] == 1)
- err = -1;
- if (!used[arr[v][i]])
- if (color == 1)
- paint(arr[v][i], 2);
- else
- paint(arr[v][i], 1);
- }
- col[v] = 2;
- }
- void dfs(int v) {
- used[v] = true;
- for (int i = 0; i < arr[v].size(); ++i) {
- if (!used[arr[v][i]])
- dfs(arr[v][i]);
- }
- cont.push_back(v);
- }
- int main() {
- int n, cur, cur1, m;
- cin >> n >> m;
- for (int i = 1; i <= m; ++i) {
- cin >> cur >> cur1;
- arr[cur].push_back(cur1);
- }
- for (int i = 1; i <= n; ++i)
- if (!used[i])
- paint(i, 1);
- if (err == -1)
- cout << "No";
- else {
- cout << "Yes" << '\n';
- fill(used, used + 109, 0);
- for (int i = 1; i <= n; ++i)
- if (!used[i])
- dfs(i);
- vector<int>::reverse_iterator it;
- for (it = cont.rbegin(); it != cont.rend(); ++it) {
- cout << *it << " ";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement