Pagini recente » Cod sursa (job #2373472) | Cod sursa (job #618053) | Cod sursa (job #1676038) | Cod sursa (job #1322441) | Cod sursa (job #2333015)
#include <bits/stdc++.h>
using namespace std;
const int nmax=50005;
vector <int> noduri[nmax];
bool visited[nmax];
struct nod
{
int x, y, prioritate;
}v[nmax];
bool cmp(nod a, nod b)
{
if(a.x==b.x)
return a.prioritate<b.prioritate;
return a.x<b.x;
}
void dfs(int start_node)
{
printf("%d ", start_node);
visited[start_node]=true;
for(int i=0;i<noduri[start_node].size();i++)
if(visited[noduri[start_node][i]]==false)
dfs(noduri[start_node][i]);
}
int main()
{
freopen("sortaret.in", "r", stdin);
freopen("sortaret.out", "w", stdout);
int n, m;
scanf("%d%d", &n, &m);
int start_node;
for(int i=1;i<=m;i++)
{
scanf("%d%d", &v[i].x, &v[i].y);
if(i==1)
start_node=v[i].x;
v[i].prioritate=i;
}
sort(v+1, v+m+1, cmp);
for(int i=1;i<=m;i++)
{
noduri[v[i].x].push_back(v[i].y);
while(v[i].x==v[i+1].x&&v[i].y==v[i+1].y&&i<=m)
i++;
}
dfs(start_node);
for(int i=1;i<=n;i++)
if(visited[i]==false)
dfs(i);
return 0;
}