PAT 团体天梯赛 L2-002. 链表去重
2016-07-07 23:43
465 查看
题意:中文不说了
方法:直接数组模拟链表就好了 有一个坑点 链表不一定全部包含给出的那些数据 可能只用到部分数据
方法:直接数组模拟链表就好了 有一个坑点 链表不一定全部包含给出的那些数据 可能只用到部分数据
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <algorithm> #include <string> #include <map> #include <math.h> #include <queue> #include <climits> #include <stack> using namespace std; int Next[100005]; int ans[100005][3]; int ans2[100005][3]; int vis[100005]; int ss[100005]; int main() { int fir, n; scanf("%d%d", &fir, &n); memset(Next, -1, sizeof(Next)); for(int i = 0; i < n; i++){ int a, b, c; scanf("%d%d%d", &a, &b, &c); ss[a] = b; Next[a] = c; } int cnt1 = 0, cnt2 = 0; memset(vis, 0, sizeof(vis)); for(; fir != -1; fir = Next[fir]){ int key = ss[fir]; if(vis[abs(key)]){ ans2[cnt2][0] = fir; ans2[cnt2][1] = key; cnt2++; } else { ans[cnt1][0] = fir; ans[cnt1][1] = key; vis[abs(key)] = 1; cnt1++; } } for(int i = 0; i < cnt1 - 1; i++) ans[i][2] = ans[i + 1][0]; for(int i = 0; i < cnt2 - 1; i++) ans2[i][2] = ans2[i + 1][0]; ans[cnt1 - 1][2] = -1; ans2[cnt2 - 1][2] = -1; for(int i = 0; i < cnt1 - 1; i++){ printf("%05d %d %05d\n", ans[i][0], ans[i][1], ans[i][2]); } if(cnt1 ) printf("%05d %d -1\n", ans[cnt1 - 1][0], ans[cnt1 - 1][1]); for(int i = 0; i < cnt2 - 1; i++){ printf("%05d %d %05d\n", ans2[i][0], ans2[i][1], ans2[i][2]); } if(cnt2) printf("%05d %d -1\n", ans2[cnt2 - 1][0], ans2[cnt2 - 1][1]); return 0; }
相关文章推荐
- 杂
- [leetcod] 从 “寻找故障机器” y&II 的一点启发
- Blender 2.7.7 引用OSL文件的路径问题
- Mac下Lua Sublime Text2 开发环境搭建
- 都是缓存惹的火
- Spring知识点提炼
- nagios监控服务器的搭建
- 接口测试笔记1
- 逻辑地址、虚拟地址、物理地址
- 每日一题(day1)
- vim实用功能备忘
- 产品助理day4及简评京东淘宝美团等筛选实现方式的优缺点
- 一起talk C栗子吧(第一百七十三回:C语言实例--关闭终端中的缓冲功能一)
- shell脚本中实现脚本a里面的函数调用脚本b中的函数参数-用到source关键字
- Vue.js学习 Item2 -- 原理概述
- 【树DP+基环树】[NOI2013]快餐店
- Openstack组件实现原理 — Nova 体系结构
- interactive_timeout
- Jmeter性能测试 入门
- mysql基础篇---mysql查询语句干货!!!