愤怒的小朋友+热浪
来源:互联网 发布:压缩文件的编程原理 编辑:程序博客网 时间:2024/04/27 19:01
热浪
题目描述
德克萨斯纯朴的人们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品。Farmer John此时以先天下之忧而忧,后天下之乐而乐的精神,身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛奶的重任,以减轻德克萨斯人忍受酷暑的痛苦。
FJ已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点先一共经过T (1 <= T <= 2,500)个城镇,方便地标号為1到T。除了起点和终点外地每个城镇由两条双向道路连向至少两个其它地城镇。每条道路有一个通过费用(包括油费,过路费等等)。
给定一个地图,包含C (1 <= C <= 6,200)条直接连接2个城镇的道路。每条道路由道路的起点Rs,终点Re (1 <= Rs <= T; 1 <= Re <= T),和花费(1 <= Ci <= 1,000)组成。求从起始的城镇Ts (1 <= Ts <= T)到终点的城镇Te(1 <= Te <= T)最小的总费用。
输入
第一行: 4个由空格隔开的整数: T, C, Ts, Te
第2到第C+1行: 第i+1行描述第i条道路。有3个由空格隔开的整数: Rs, Re和Ci
输出
一个单独的整数表示从Ts到Te的最小总费用。数据保证至少存在一条道路。
样例输入
7 11 5 4
2 4 2
1 4 3
7 2 2
3 4 3
5 7 5
7 3 3
6 1 1
6 3 4
2 4 3
5 6 3
7 2 1
样例输出
7
var w:array[0..15000,1..3]of longint; s,dist:array[0..2500]of longint; t:array[0..24800]of longint; i,j,k:longint; m,n,len,a,b,c,head,tail,start,finish,tt:longint;procedure init(a,b,c:longint);begin w[len,1]:=b; w[len,2]:=c; if w[a,3]=0 then w[a,3]:=len else w[w[a,1],3]:=len; w[a,1]:=len; inc(len);end;begin readln(n,m,start,finish); len:=n+1; for i:=1 to m do begin readln(a,b,c); init(a,b,c); init(b,a,c); end; for i:=1 to n do dist[i]:=maxlongint; head:=1; tail:=2; t[head]:=start; s[start]:=1; dist[start]:=0; while head<tail do begin for i:=head to tail-1 do begin tt:=w[t[i],3]; while tt<>0 do begin if w[tt,2]+dist[t[i]]<dist[w[tt,1]] then begin dist[w[tt,1]]:=w[tt,2]+dist[t[i]]; if s[w[tt,1]]=0 then begin s[w[tt,1]]:=1; t[tail]:=w[tt,1]; inc(tail); end; end; tt:=w[tt,3]; end; s[t[i]]:=0; inc(head); end; end; writeln(dist[finish]);end.
愤怒的小朋友
题目描述
最后,清醒过来的小朋友们发现自己手里一点糖果的没有,这种失望渐渐演变成了愤怒。于是,古有百万雄师下长江,今有十万小朋友追Steven。现在Steven已经到了生死关头,急需你的帮助!
城市里一共有N个路口。Steven位于路口1,而他的家位于路口N。城市中一共有M条双向道路,每条道路连接两个路口,通过这条路需要一定的时间。保证没有任意一条道路两端是同一个路口,也保证一定存在一条让Steven逃回家的道路。Steven想问问你他最快的逃回家需要多长时间?
输入
第一行两个整数N,M。
接下来的M行每行三个整数,ai, bi, ti.表示一条连通路口ai和bi的道路,通过这条道路用时为ti
输出
一行一个整数。为最少需要的时间。
样例输入
4 5
1 2 3
1 3 4
2 3 5
4 3 5
1 4 1
样例输出
1
提示
对于70%的数据N<=100,M<=200;
对于100%的数据 N<=50000,M<=200000,1<=ai, bi<=N,1<=ti<=104
var w:array[0..460000,1..3]of longint; s,dist:array[0..50000]of longint; t:array[0..800000]of longint; i,j,k:longint; m,n,len,a,b,c,head,tail,start,finish,tt:longint;procedure init(a,b,c:longint);begin w[len,1]:=b; w[len,2]:=c; if w[a,3]=0 then w[a,3]:=len else w[w[a,1],3]:=len; w[a,1]:=len; inc(len);end;begin readln(n,m); len:=n+1; for i:=1 to m do begin readln(a,b,c); init(a,b,c); init(b,a,c); end; start:=1; finish:=n; for i:=1 to n do dist[i]:=maxlongint; head:=1; tail:=2; t[head]:=start; s[start]:=1; dist[start]:=0; while head<tail do begin for i:=head to tail-1 do begin tt:=w[t[i],3]; while tt<>0 do begin if w[tt,2]+dist[t[i]]<dist[w[tt,1]] then begin dist[w[tt,1]]:=w[tt,2]+dist[t[i]]; if s[w[tt,1]]=0 then begin s[w[tt,1]]:=1; t[tail]:=w[tt,1]; inc(tail); end; end; tt:=w[tt,3]; end; s[t[i]]:=0; inc(head); end; end; writeln(dist[finish]);end.
- 愤怒的小朋友+热浪
- 热浪
- 热浪
- 热浪
- 热浪
- 热浪
- 长大了的小朋友
- 唉,可爱的小朋友
- 2552: 小朋友的数字
- 小朋友
- 愤怒的程序员
- 愤怒的一天
- 愤怒的裸奔
- 无耻的愤怒
- 大学老师的愤怒
- 令人愤怒的北京铁路局
- 午夜的愤怒
- 愤怒的小鸟
- day02-常用算法-排序
- 江苏电信宽带移机怎么办理
- Android中圆形的imageView
- Android UI学习之CheckBox
- OC基础11:基本的C语言特性2
- 愤怒的小朋友+热浪
- 在绑定repeater时,获取值
- iOS 播放音频的几种方法
- 代码设置安卓主题
- C#中Math.Round()实现中国式四舍五入
- 图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()
- LOG算子的运用
- android 基础知识总结 之 等待圆环
- 2012年5月SAT香港真题解析