• 1557 热浪


    1557 热浪

     

    时间限制: 1 s
    空间限制: 256000 KB
    题目等级 : 钻石 Diamond
     
     
     
     
    题目描述 Description

    德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品。Farmer John此时以先天下之忧而忧,后天下之乐而乐的精神,身先士卒地承担起向德克萨斯运送大量的营养冰凉的牛奶的重任,以减轻德克萨斯人忍受酷暑的痛苦。

    FJ已经研究过可以把牛奶从威斯康星运送到德克萨斯州的路线。这些路线包括起始点和终点先一共经过T (1 <= T <= 2,500)个城镇,方便地标号為1T。除了起点和终点外地每个城镇由两条双向道路连向至少两个其它地城镇。每条道路有一个通过费用(包括油费,过路费等等)。

    给定一个地图,包含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)最小的总费用。

    输入描述 Input Description

    第一行: 4个由空格隔开的整数: T, C, Ts, Te

    2到第C+1i+1行描述第i条道路。有3个由空格隔开的整数: Rs, ReCi

    输出描述 Output Description

    一个单独的整数表示从TsTe的最小总费用。数据保证至少存在一条道路。

    样例输入 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

    数据范围及提示 Data Size & Hint

    5->6->1->4 (3 + 1 + 3)

    分类标签 Tags 点此展开

    暂无标签
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<queue>
     5 using namespace std;
     6 const int MAXN=30001;
     7 const int maxn=0x7fffffff;
     8 struct node
     9 {
    10     int u;
    11     int v;
    12     int w;
    13     int next;
    14 }edge[MAXN]; 
    15 int num=1;
    16 int head[MAXN];
    17 int n,m,begin,end;
    18 int dis[MAXN];
    19 int vis[MAXN];
    20 void spfa()
    21 {
    22     for(int i=1;i<=n;i++)dis[i]=maxn;
    23     queue<int>q;
    24     vis[begin]=1;
    25     q.push(begin);
    26     dis[begin]=0;
    27     while(q.size()!=0)
    28     {
    29         int p=q.front();
    30         q.pop();
    31         vis[p]=0;
    32         for(int i=head[p];i!=-1;i=edge[i].next)
    33         {
    34             if(dis[edge[i].v]>dis[p]+edge[i].w&&dis[p]!=maxn)
    35             {
    36                 dis[edge[i].v]=dis[p]+edge[i].w;
    37                 if(vis[edge[i].v]==0)
    38                 {
    39                     q.push(edge[i].v);
    40                     vis[edge[i].v]=1;
    41                 }
    42             }
    43         }
    44     }
    45     printf("%d",dis[end]);
    46 }
    47 int main()
    48 {
    49     scanf("%d%d%d%d",&n,&m,&begin,&end);
    50     for(int i=1;i<=n;i++)head[i]=-1;
    51     for(int i=1;i<=m;i++)
    52     {
    53         scanf("%d%d%d",&edge[num].u,&edge[num].v,&edge[num].w);
    54         edge[num].next=head[edge[num].u];
    55         head[edge[num].u]=num++;
    56         edge[num].w=edge[num-1].w;
    57         edge[num].u=edge[num-1].v;
    58         edge[num].v=edge[num-1].u;
    59         edge[num].next=head[edge[num].u];
    60         head[edge[num].u]=num++;
    61     }
    62     spfa();
    63     return 0;
    64 }
  • 相关阅读:
    正则替换 html
    黎曼积分:采用任意无限分割时
    A field guide to algebra,theorem 1.1.3
    $\mathbf{R}$上开集的构造
    陶哲轩实分析引理18.2.5
    A field guide to algebra,theorem 1.1.3
    陶哲轩实分析引理18.2.5
    $\mathbf{R}$上开集的构造
    关于勒贝格外测度的一条等式
    Some remarks on definition 1.1.1,A field guide to algebra
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6719973.html
Copyright © 2020-2023  润新知