码迷,mamicode.com
首页 > 其他好文 > 详细

3408: [Usaco2009 Oct]Heat Wave 热浪

时间:2015-04-11 22:30:31      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

3408: [Usaco2009 Oct]Heat Wave 热浪

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 67  Solved: 55
[Submit][Status][Discuss]

Description

技术分享

 

Input

 第1行:4个由空格隔开的整数T,C,Ts,Te.
 第2到第C+1行:第i+l行描述第i条道路.有3个由空格隔开的整数Rs,Re,Ci.

Output

    一个单独的整数表示Ts到Te的最小费用.数据保证至少存在一条道路.

Sample Input

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

Sample Output

7

HINT

 

Source

Gold

 

题解:话说USACO金组为啥时候冒出来这么多普及组题= =

最短路模板题不解释

 1 /**************************************************************
 2     Problem: 3408
 3     User: HansBug
 4     Language: Pascal
 5     Result: Accepted
 6     Time:48 ms
 7     Memory:5496 kb
 8 ****************************************************************/
 9  
10 type
11     point=^node;
12     node=record
13                g,w:longint;
14                next:point;
15     end;
16 var
17    i,j,k,l,m,n,s,t,f,r:longint;
18    a:array[0..100000] of point;
19    c,g:array[0..100000] of longint;
20    d:array[0..1000000] of longint;
21    p:point;
22 procedure add(x,y,z:longint);
23           var p:point;
24           begin
25                new(p);p^.g:=y;p^.w:=z;
26                p^.next:=a[x];a[x]:=p;
27           end;
28 begin
29      readln(n,m,s,t);
30      for i:=1 to n do a[i]:=nil;
31      for i:=1 to m do
32          begin
33               readln(j,k,l);
34               add(j,k,l);add(k,j,l);
35          end;
36      fillchar(g,sizeof(g),0);
37      fillchar(c,sizeof(c),0);
38      f:=1;r:=2;d[1]:=s;c[s]:=1;g[s]:=1;
39      while f<r do
40            begin
41                 p:=a[d[f]];
42                 while p<>nil do
43                       begin
44                            if (c[p^.g]=0) or ((c[p^.g]>0) and (c[p^.g]>(c[d[f]]+p^.w))) then
45                               begin
46                                    c[p^.g]:=c[d[f]]+p^.w;
47                                    if g[p^.g]=0 then
48                                       begin
49                                            g[p^.g]:=1;
50                                            d[r]:=p^.g;
51                                            inc(r);
52                                       end;
53                               end;
54                            p:=p^.next;
55                       end;
56                 g[d[f]]:=0;
57                 inc(f);
58            end;
59      for i:=1 to n do dec(c[i]);
60      writeln(c[t]);
61      readln;
62 end.   

 

3408: [Usaco2009 Oct]Heat Wave 热浪

标签:

原文地址:http://www.cnblogs.com/HansBug/p/4418567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!