• 2762 helloparty·开车


    2762 helloparty·开车

     

    时间限制: 1 s
    空间限制: 32000 KB
    题目等级 : 黄金 Gold
     
    题目描述 Description

    hellokitty的一个朋友要来他家,但是有很多路,并且一直每一条路的长度,不可能为非正数。而且为整数,求最短路径。已知hellokitty编号为M,朋友家的编号为1

    输入描述 Input Description

    N+1行

    第一行 N M

    第二行到第N行 表示每一条路的长度。每行三个整数 x y z表示有一条x到y的有向边长度为z

    输出描述 Output Description

    最短路

    样例输入 Sample Input

    3 3

    1 2 5

    2 3 7

    1 3 19

    样例输出 Sample Output

    12

    数据范围及提示 Data Size & Hint

    N<=1000

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<queue>
     4 #include<cstring>
     5 using namespace std;
     6 int n,m,d;
     7 queue<int>s;
     8 int map[1010][1010],dis[1010];
     9 bool vis[1010];
    10 void spfa()
    11 {
    12     memset(dis,0x7f,sizeof(dis));
    13     vis[1]=1;
    14     s.push(1);
    15     dis[1]=0;
    16     while(!s.empty() )
    17     {
    18         d=s.front() ;
    19         s.pop() ;
    20         for(int i=1;i<=n;++i)
    21         {
    22             if(map[d][i]!=0&&dis[i]>dis[d]+map[d][i])
    23             {
    24                 dis[i]=dis[d]+map[d][i];
    25                 if(!vis[i])s.push(i); 
    26             }
    27         }
    28         vis[d]=0;
    29     } 
    30 }
    31 int main()
    32 {
    33     cin>>n>>m;
    34     if(n==0)
    35     {
    36         printf("0");return 0;
    37     }
    38     for(int a,b,c,i=1;i<=m;++i)
    39     {
    40         scanf("%d%d%d",&a,&b,&c);
    41         map[a][b]=c;
    42     }
    43     spfa();    
    44     printf("%d",dis[n]);
    45     return 0;
    46 }
  • 相关阅读:
    POJ 1062 坑爹的聘礼(枚举等级差选择性找边)
    c++ string函数详细返回值及用法!
    POJ 2240 利率变权值 Floyd变乘法
    POJ 1797 最大运载量
    API code
    编程题目的讨论
    C语言位运算符:与、或、异或、取反、左移和右移
    &与&& C语言
    反思
    CreateWindow的出错解决
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6773262.html
Copyright © 2020-2023  润新知