有向图的遍历
测试数据来自 yunhua/1624
作业已超过截止时间,您无法递交本题目。
时间限制:1秒 内存限制:256M
【问题描述】
给出 \(n\) 个顶点(编号为 \(1\sim n\))\(m\) 条边的有向图,计算从 \(S\) 出发能访问到的顶点,以及从那些点可以走到 \(S\) 。
【输入格式】
第一行两个整数 \(n\) 和 \(m\);
接下来的 \(m\) 行,每行两个整数 \(x\) 和 \(y\),表示一条有向边,\(x\)表示弧尾,\(y\) 表示弧头;
最后一行一个整数 \(S\)。
【输出格式】
第 1 行:第一个整数表示从 \(S\) 出发能访问到的顶点数量,后面的若干整数,由小到大输从 \(S\) 出发能访问到的顶点的编号(不包含S)。
第 2 行:第一个整数表示能走到 \(S\) 的顶点数量,后面若干整数,由小到大能走到 \(S\) 的顶点的编号(不包含S)。
【输入输出样例】
Input
6 10
1 2
1 4
3 2
3 5
4 2
4 5
5 1
5 2
6 3
6 5
1
Output
3 2 4 5
4 3 4 5 6
【数据说明】
对于 \(100\%\) 的数据 \(1≤n≤100000\),\(1≤m≤200000\)。
【来源】
Mr.he