csu1808】的更多相关文章

csu1808 题意 n 个点间有 m 条地铁,每条地铁可能属于不同的线路,每条地铁有权值即通过时花费的时间,如果乘坐第 i 条地铁来到地铁站 s,再乘坐第 j 条地铁离开,需要花费额外的时间 \(|c[i] - c[j]|\) 即地铁线路之差. 分析 点本身不具有线路信息,如果直接对点做最短路,无法判断要更新的点是来自于哪个线路. 而边具有唯一的线路信息,可以直接把边当成点,使用链式前向星来构造图,对边做最短路. code #include<cstdio> #include<cmath…
ICPCCamp 有 n 个地铁站,用 1,2,-,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci 号线,位于站 ai,bi 之间,往返均需要花费 ti 分钟(即从 ai 到 bi 需要 ti 分钟,从 bi 到 ai 也需要 ti 分钟). 众所周知,换乘线路很麻烦.如果乘坐第 i 段地铁来到地铁站 s,又乘坐第 j 段地铁离开地铁站 s,那么需要额外花费 |ci-cj | 分钟.注意,换乘只能在地铁站内进行. Bobo 想知道从地铁站 1 到地铁站 n 所需…
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题解:由于中转线路需要花费一定的时间,所以一般的以顶点为研究对象的dijkstra算法就不适用了,因为在松弛过程中,当前节点的最短路径不能知道是从那条线路过来的.(保存当前结点的上一站是从那条线路过来?看似可以,但是站与站之间的线路又怎么保存.矩阵?[100000][100000],内存不足.领接表?不够高效,因为要扫描链表寻找) 所以就直接把边作为研究对象.将边的信息记录到…
20170710: hdu1074,hdu1087,hdu1114,hdu1159,hdu1160,hdu1171,hdu1176,hdu1010,hdu1203 20170711: hdu1231,hdu1257,hdu1260,hdu1284,hdu1421,hdu1789,hdu1978,hdu2059,hdu2084 20170712: hdu2159,hdu2191,hdu2544,hdu2571,hdu2602,hdu2709,hdu1015,hdu1016 20170713: co…