Pagini recente » Cod sursa (job #3205917) | Cod sursa (job #426941) | Cod sursa (job #388003) | Cod sursa (job #2000344) | Cod sursa (job #979861)
Cod sursa(job #979861)
# include <iostream>
# include <fstream>
# include <vector>
# include <bitset>
using namespace std;
# define MAXN 50010
# define MAXM 100010
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n, m;
vector<pair<int, int> > G[MAXN];
bitset<MAXN> viznod;
int sol[MAXN], k, kmax, poz;
int dfs(int nd = 1)
{
viznod[nd] = true;
k++;
sol[k] = nd;
for (int i = 0; i < G[nd].size(); i++) {
if (viznod[G[nd][i].first] == false) {
dfs(G[nd][i].first);
}
}
}
int main()
{
f >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y;
f >> x >> y;
G[x].push_back(make_pair(y, i));
}
for (int i = 1; i <= n; i++) {
k = 0;
for (int i = 1; i <= n; i++) {
viznod[i] = false;
}
dfs(i);
if (kmax < k) {
kmax = k;
poz = i;
}
}
k = 0;
for (int i = 1; i <= n; i++) {
viznod[i] = false;
}
dfs(poz);
for (int i = 1; i <= n; i++) {
viznod[i] = false;
}
for (int i = 1; i <= k; i++) {
g << sol[i] << ' ';
viznod[i] = true;
}
for (int i = 1; i <= n; i++) {
if (viznod[i] == false) {
g << i << ' ';
}
}
return 0;
}