赞
踩
1-n,共n个数字,初始时每个数都是独立的算作1个串,之后会进行n-1次合并,每次合并操作,会把一个串放到另一个串的后面。
合并时会给出2个数字,x y,表示将以y为开头的串放到x为开头的串的后面。例如:
1 3 (3放到1后面,=> (1 3), 2, 4 )
2 4 (4放到2后面,=> (1 3), (2 4))
1 2 (2放到1后面,=> (1 3 2 4))
在n - 1次合并后,按顺序输出最终剩下的这个串的全部数字。
第1行:1个数n(2 <= n <= 10000) 后面n - 1行,每行2个数x y,对应n - 1次合并操作,把以y为开头的串放到以x为开头的串的末尾。
输出共n行,每行1个数,对应最终串包含的n个数字。
- 4
- 1 3
- 2 4
- 1 2
- 1
- 3
- 2
- 4
题解:
- #include <bits/stdc++.h>
- using namespace std;
- struct node {
- int next, tail;
- } nodes[10010];
- bool isnext[10010];
- int n;
- int main() {
- cin >> n;
- for (int i = 1; i <= n; i++) {
- nodes[i].tail = i;
- }
- for (int i = 1; i < n; i++) {
- int a, b;
- cin >> a >> b;
- nodes[nodes[a].tail].next = b;
- nodes[a].tail = nodes[b].tail;
- isnext[b] = true;
- }
- int head = 0;
- for (int i = 1; i <= n; i++) {
- if (!isnext[i]) {
- head = i;
- }
- }
- for (int p = head; p != 0; p = nodes[p].next) {
- cout << p << endl;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。