Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- #define MAXN 100
- vector<int> v[301];
- int i1,i2;
- int vis[301];
- vector<int>wynik;
- int N;
- int max_wierzcholek;
- int wch[10000];
- void wczytaj_graf()
- {
- int i1, i2;
- for(int i=0;i<N;i++)
- {
- cin >> i1 >> i2;
- v[i1].push_back(i2);
- wch[i2]++;
- max_wierzcholek=max(max_wierzcholek,max(i1,i2));
- }
- }
- void dfs(int x)
- {
- for(int i=0;i<v[x].size();i++)
- {
- int s=v[x][i];
- if(vis[s]==0)
- {
- vis[s]=1;
- dfs(s);
- }
- }
- wynik.push_back(x);
- }
- int main()
- {
- for(int i=0;i<301;i++)
- {
- wch[i]=0;
- }
- int licz=0, licz2=0;
- cin >> N;
- wczytaj_graf();
- for(int i=1;i<=max_wierzcholek;i++)
- if(wch[i]==0) licz++;
- for(int i=1;i<=max_wierzcholek;i++)
- {
- if(v[i].empty()) licz2++;
- }
- if(licz!=1 || licz2!=1)
- {
- cout << "NIE";
- return 0;
- }
- for(int i=1;i<=max_wierzcholek;i++)
- vis[i]=0;
- for(int i=1;i<=max_wierzcholek;i++)
- {
- if(vis[i]==0)
- {
- vis[i]=1;
- dfs(i);
- }
- }
- for(int i=wynik.size()-1;i>=0;i--) cout << wynik[i] << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment