天梯赛L2 - 002
数组模拟链表,先读入,在输出的时候去除重复元素;
注意这里要寻找到下一个符合要求的元素再输出ne地址。
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 1e5 + 9;
int val[N], ne[N];
int start, n;
bool usedVal[N];
vector<int> rest;
void solve() {
cin >> start >> n;
for (int i = 0; i < n; i++) {
int id, v, nex;
scanf("%d%d%d", &id, &v, &nex);
val[id] = v;
ne[id] = nex;
}
int p = start;
int cnt = 0;
while (p != -1) {
int v = abs(val[p]);
if (!usedVal[v]) {
if (p != start) printf("%05d\n", p);
printf("%05d %d ", p, val[p]);
usedVal[v] = true;
cnt++;
} else {
rest.push_back(p);
}
p = ne[p];
}
cout << p << '\n';
for (auto pp: rest) {
if (pp != rest[0]) printf("%05d\n", pp);
printf("%05d %d ", pp, val[pp]);
}
if (!rest.empty()) cout << -1;
}
int main() {
solve();
return 0;
}