const int MAXSIZE = 1e6 + 7;
struct Tail
{
int to, next;
}tail[MAXSIZE];
int head[MAXSIZE] = {0}, tot = 0;
bool visit[MAXSIZE] = {0};
void Add(int _head, int _tail) {
tail[++tot].to = _tail;
tail[tot].next = head[_head];
head[_head] = tot;
}
int main()
{
int n,m,start,over;
while (cin >> n >>m) {
tot = 0;
memset(head, 0, sizeof(head));
memset(tail, 0, sizeof(tail));
memset(visit, 0, sizeof(visit));
for (int i = 0; i < m; ++i) {
cin >> start >> over;
Add(start, over);
}
for (int i = 1; i <= n; i++)
{
if(visit[i]) continue;
visit[i] = true;
cout << i <<" ";
for (int j = head[i]; j; j = tail[j].next)
{
if(visit[tail[j].to]) continue;
visit[tail[j].to] = true;
cout << tail[j].to << " ";
}
}
cout << endl;
}
return 0;
}
转载请注明原文地址:https://blackberry.8miu.com/read-43055.html