L2-002. 链表去重
2018-03-23 20:27
302 查看
L2-002. 链表去重
有是一道模拟!!!!#include<bits/stdc++.h>
#include<cstdlib>
#define ll long long
using namespace std;
const int maxn = 1e5+7;
typedef struct nod{
int s1;
int c;
int nexts;
} nod;
nod n1[maxn],n2[maxn], n3[maxn];
map<int, int> mp1;
map<int, int> mp2;
int main()
{
int s, s1, s2, n, c;
scanf("%d%d", &s, &n);
for(int i = 0; i < n; i++){
scanf("%d%d%d", &s1, &c, &s2);
mp1[s1] = c;
mp2[s1] = s2;
}
int cast = 0;
for(int i = 0; i < n && s != -1; i++)
{
n1[i].s1 = s;
n1[i].c = mp1[s];
n1[i].nexts = mp2[s];
s = mp2[s];
cast++;
}
int cas3 = 0, cas2 = 0;
n = cast;
set<int> st;
for(int i = 0; i < n; i++) {
if(st.count(abs(n1[i].c)) == 0) {
n2[cas2++] = n1[i];
st.insert(abs(n1[i].c));
} else {
n3[cas3++] = n1[i];
}
}
for(int i = 0; i < cas2 - 1; i++) {
n2[i].nexts = n2[i+1].s1;
}
n2[cas2 - 1].nexts = -1;
for(int i = 0; i < cas3 - 1; i++) {
n3[i].nexts = n3[i+1].s1;
}
if(cas3 != 0)
n3[cas3 - 1].nexts = -1;
for(int i = 0; i < cas2 - 1; i++) {
printf("%05d %d %05d\n", n2[i].s1, n2[i].c, n2[i].nexts);
}
printf("%05d %d %d\n", n2[cas2 - 1].s1, n2[cas2 - 1].c, n2[cas2 - 1].nexts);
for(int i = 0; i < cas3 - 1; i++) {
printf("%05d %d %05d\n", n3[i].s1, n3[i].c, n3[i].nexts);
}
if(cas3 != 0)
printf("%05d %d %d\n", n3[cas3 - 1].s1, n3[cas3 - 1].c, n3[cas3 - 1].nexts);
return 0;
}
相关文章推荐
- L2-002. 链表去重
- PAT L2-002. 链表去重 巧妙利用数组的索引
- 天梯赛 - L2-002 链表去重
- 天梯- L2-002. 链表去重
- L2-002. 链表去重
- 团体程序设计天梯赛-练习集 L2-002. 链表去重 解题报告
- 天梯赛L2-002链表去重
- L2-002. 链表去重
- L2-002. 链表去重
- L2-002. 链表去重
- L2-002. 链表去重
- L2-002. 链表去重(模拟)
- L2-002. 链表去重
- L2-002. 链表去重
- L2-002. 链表去重---模拟
- L2-002. 链表去重(vector)
- L2-002. 链表去重(用两个队列来储存两个链表)
- L2-002. 链表去重
- 团体程序设计天梯赛-练习集 L2-002. 链表去重
- 团体程序设计天梯赛-练习集L2-002. 链表去重