jzoj1520 破碎的路径
2018-01-27 16:37
190 查看
Description
比尔去很多地方旅游过。他在旅游的同时留下了很多简短的旅行笔记。笔记的形式是这样的:出发地 目的地
如下面就是三条合法的note:
SwimmingPool OldTree
BirdsNest Garage
Garage SwimmingPool
在某一次搬家的时候,比尔的笔记本不小心散架了。于是他的笔记的顺序被完全打乱了。他想请你帮个忙,帮他把这些笔记的顺序整理好,先写的笔记在前面。幸运的是,同一个地方比尔至多只去过一次。也就是说,在这些笔记当中,一个地方至多出现两次,一次作为目的地,一次作为出发地。
Input
第一行是一个整数n,表示笔记的条数。N <= 12000。接下来有n行,每行一条笔记。笔记的两个单词的长度都不会超过15,两个单词之间以一个空格分隔。Output
输出整理好顺序的笔记.Sample Input
3SwimmingPool OldTree
BirdsNest Garage
Garage SwimmingPool
Sample Output
BirdsNest GarageGarage SwimmingPool
SwimmingPool OldTree
Hint
【限制】对于50%的数据,n <= 1000。
对于100%的数据,n <= 12000。
算法讨论
二分+排序。把出发点数组a和目的地数组b分别排序,排序时连同a的日记编号一同排序,如果a[i]在b中没有出现,那么就是起点,s[i]就是第一条,再把b[s[i]]在a中寻找,就知道下一条路线,同理重复n次。
while a[i]<t do inc(i); while a[j]>t do dec(j); if i<=j then begin z:=a[i];a[i]:=a[j];a[j]:=z; c:=s[i];s[i]:=s[j];s[j]:=c; inc(i);dec(j); end; until i>j; if l<j then kp(l,j); if i<r then kp(i,r); end; procedure kpp(l,r:longint); var i,j:longint; t,z:string; begin i:=l;j:=r; t:=b[(l+r) div 2]; repeat while b[i]<t do inc(i); while b[j]>t do dec(j); if i<=j then begin z:=b[i];b[i]:=b[j];b[j]:=z; inc(i);dec(j); end; until i>j; if l<j then kpp(l,j); if i<r then kpp(i,r); end; var i,j:longint; begin readln(n); for i:=1 to n do begin readln(y[i]); x[i]:=copy(y[i],1,pos(' ',y[i])-1); delete(y[i],1,pos(' ',y[i])); a[i]:=x[i]; b[i]:=y[i]; s[i]:=i; end; kp(1,n); kpp(1,n); for i:=1 to n do if b[ef(a[i])]<>a[i] then begin j:=s[i]; break; end; for i:=1 to n do begin writeln(x[j],' ',y[j]); j:=find(y[j]); end; end.
相关文章推荐
- 【JZOJ 1520】破碎的路径(hash)
- jzoj P1520 破碎的路径
- 【JZOJ4715】【NOIP2016提高A组模拟8.19】树上路径
- [jzoj]3734. 【Usaco2014Open银组】双导航(gpsdual) (最短路径细节题)
- JZOJ 5234. 【NOIP2017模拟8.7A组】外星人的路径
- 【jzoj5055】【GDOI2017模拟二试4.12】【树上路径】【点分治】
- 【JZOJ 5483】 简单路径
- JZOJ 5483. 【清华集训2017模拟11.26】简单路径
- 【JZOJ 4715】树上路径
- Jzoj5234 外星人的路径
- [jzoj]5483. 【清华集训2017模拟11.26】简单路径
- [哈希][图论]破碎的路径
- 【jzoj4715】【树上路径】【树】【分治】【点分治】
- 【JZOJ5055】【GDOI2017模拟二试4.12】树上路径
- JZOJ 4715 【NOIP2016提高A组模拟8.19】树上路径
- jzoj5234. 【NOIP2017模拟8.7A组】外星人的路径
- JZOJ 3767【BJOI2014】路径
- [JZOJ3767]【BJOI2014】路径
- 破碎的路径
- [JZOJ5055]树上路径