http://www.cogs.top/cogs/problem/problem.php?pid=254

dist[i]表示能最早到达i点的时间。这样就可以用最短路模型来转移了。

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1003;
const int K = 2003;
int in() {
int k = 0, fh = 1; char c = getchar();
for(; c < '0' || c > '9'; c = getchar())
if (c == '-') fh = -1;
for(; c >= '0' && c <= '9'; c = getchar())
k = (k << 3) + (k << 1) + c - '0';
return k * fh;
} struct que {
int id, dist;
que(int _id = 0, int _dist = 0) : id(_id), dist(_dist) {}
bool operator < (const que &A) const {
return dist > A.dist;
}
};
struct node {int nxt, to, w, c, sum;} E[10003];
int gx, mx, x, y, n, k, cnt = 0, point[N];
int p[N], r[N], dist[N], pre[N], note[N];
bool vis[N]; void ins(int u, int v, int w, int c, int sum) {
E[++cnt] = (node) {point[u], v, w, c, sum}; point[u] = cnt;
} int cal(int a, int b, int c) {
a = a % c; b = b % c;
if (a >= b) return a - b;
else return a - b + c;
} void dijkstra() {
priority_queue <que> q;
q.push(que(x, dist[x]));
que u; int t;
while (!q.empty()) {
u = q.top(); q.pop();
if (vis[u.id]) continue;
vis[u.id] = true;
for(int i = point[u.id]; i; i = E[i].nxt)
if ((t = (dist[u.id] + cal(E[i].sum, dist[u.id], E[i].c) + E[i].w)) < dist[E[i].to])
dist[E[i].to] = t, q.push(que(E[i].to, t));
}
} int main() {
freopen("pod.in", "r", stdin);
freopen("pod.out", "w", stdout);
n = in(); k = in(); x = in(); y = in(); gx = in(); mx = in();
int s, c, ret;
for(int i = 1; i <= k; ++i) {
s = in(); c = in();
for(int i = 1; i <= s; ++i)
p[i] = in();
for(int i = 1; i < s; ++i)
r[i] = in();
ret = 0;
for(int i = 1; i < s; ++i) {
ins(p[i], p[i + 1], r[i], c, ret);
ret += r[i];
}
ret = 0;
for(int i = s - 1; i >= 1; --i) {
ins(p[i + 1], p[i], r[i], c, ret);
ret += r[i];
}
} memset(dist, 127, sizeof(int) * (n + 1));
dist[x] = mx;
dijkstra(); ret = dist[y];
printf("%d %d\n", (gx + ret / 60) % 24, ret % 60); return 0;
}

【COGS 254】【POI 2001】交通网络图的更多相关文章

  1. [POI 2001+2014acm上海邀请赛]Gold Mine/Beam Cannon 线段树+扫描线

    Description  Byteman, one of the most deserving employee of The Goldmine of Byteland, is about to re ...

  2. POI 2001 Goldmine 线段树 扫描线

    题目链接 http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=1350 http://main.edu.pl/en/archive/oi/8/kop ...

  3. hdu 1814 Peaceful Commission (2-sat 输出字典序最小的路径)

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  4. Peaceful Commission

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...

  5. 【C#数据结构系列】图

    一:图 图状结构简称图,是另一种非线性结构,它比树形结构更复杂.树形结构中的结点是一对多的关系,结点间具有明显的层次和分支关系.每一层的结点可以和下一层的多个结点相关,但只能和上一层的一个结点相关.而 ...

  6. HDU1814(2-SAT)

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. 一本通1625【例 1】反素数 Antiprime

    反素数 Antiprime 题目描述 原题来自:POI 2001 如果一个大于等于 1 的正整数 n,满足所有小于 n 且大于等于 1 的所有正整数的约数个数都小于 n 的约数个数,则 n 是一个反素 ...

  8. HDOJ 1814 Peaceful Commission

    经典2sat裸题,dfs的2sat能够方便输出字典序最小的解... Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Mem ...

  9. HDU1814 2-sat 模板

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

随机推荐

  1. leetcode-Combinations 复习复习排列组合

    Combinations 题意: 根据给定的n和k,生成从1到n范围内长度为k的排列组合 示例: n=4 k=2 [[1, 2], [1, 3], [1, 4], [2, 1], [2, 3], [2 ...

  2. POJ 3384 Feng Shui --直线切平面

    题意:房间是一个凸多边形,要在里面铺设两条半径为r的圆形地毯,可以重叠,现在要求分别铺设到哪,使地毯所占的地面面积最大. 解法:要使圆形地毯所占面积最大,圆形地毯一定是与边相切的,这样才能使尽量不重叠 ...

  3. S2结业考试的第一次测验

    错题分析: 1:java中的错误处理是通过异常处理模型来实现的,那么异常处理模块能处理的错误是: A:运行时错误 B:逻辑错误 C:语法错误 D:内部错误 正确答案是:A 解析:运行时异常都是Runt ...

  4. Android中分页滑动实现总结

    手机的屏幕相对较小,因此会出现当有多项内容需要展示而不得不进行分页的情况.例如手机桌面的应用图标的展示.一般一屏可以显示4*4=16个小方块形的应用程序,可以通过左右滑动进行屏幕的选择.而Androi ...

  5. jQuery学习之jQuery Ajax用法详解

    jQuery Ajax在web应用开发中很常用,它主要包括有ajax,get,post,load,getscript等等这几种常用无刷新操作方法,下面我来给各位同学介绍介绍. 我们先从最简单的方法看起 ...

  6. 转- android硬件传感器

    纯属转载:http://dev.10086.cn/cmdn/bbs/thread-41843-1-1.html 1.传感器入门 自从苹果公司在2007年发布第一代iPhone以来,以前看似和手机挨不着 ...

  7. apt-get update更新源时,出现“Hash Sum mismatch”问题

    当使用apt-get update更新源时,出现下面"Hash Sum mismatch"的报错,具体如下:root@localhost:~# apt-get update.... ...

  8. Oracle 11g Express

    Oracle 11g Express 安装和使用教程   使用工具的第一步就是安装工具,配置环境!下面就Oracle 11g Express的安装和简单实用做一简介. 一.下载安装过程 去oracle ...

  9. Linux shell文本过滤

    正则表达式 --概念:一种用来描述文本模式的特殊语法 --由普通字符(例如:字符a到z),以及特殊字符(元字符,如/*?等)组成匹配的字符串 --文本过滤工具在某种模式之下,都支持正则表达式 --基本 ...

  10. sleep和wait的区别有:

    sleep和wait的区别有: 1,这两个方法来自不同的类分别是Thread和Object 2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得敏感词线程可以使用同步控制块或者方法. 3 ...