就不写题目链接了

Sample Input

5 5  点个数a,边个数b
1 2 20      点,点,权值
2 3 30
3 4 20
4 5 20
1 5 100                求出1到a的最短距离

Sample Output

90防止有重边
 #include <iostream>
 #include <cstdio>
 using namespace std;
 #define Max 1000+10
 #define INF 0x3f3f3f3f
 int cost[Max][Max];
 int lowcost[Max];
 bool vis[Max];
 int N,T;
 void dijkstra(int s)
 {

     int i,u,v;
     ;u<=N;u++)
     {
         lowcost[u]=INF;
         vis[u]=;
     }
     lowcost[]=;
     int Min=INF;

     )
     {
         ;
         ;u<=N;u++)
         {
             ||lowcost[u]<lowcost[p]))
                 p=u;
         }
         )    break;
         vis[p]=;
         ;u<=N;u++)
             if(!vis[u]&&(lowcost[p]+cost[p][u])<lowcost[u])
                 lowcost[u]=lowcost[p]+cost[p][u];
     }
 }
 int main()
 {
     int i,j;
     int a,b,w;
     freopen("in.txt","r",stdin);
     while(scanf("%d%d",&T,&N)!=EOF)
     {
         ;i<=N;i++)
         {
             ;j<=N;j++)
             {
                 if(j==i)
                     cost[i][j]=;
                 else
                     cost[i][j]=cost[j][i]=INF;
             }
         }
         ;i<T;i++)
         {
             scanf("%d%d%d",&a,&b,&w);
             if(w<cost[a][b])
             {
                 cost[a][b]=cost[b][a]=w;
             }
         }
         dijkstra();
         printf("%d\n",lowcost[N]);
     }
 }
Sample Input
3 3   点,边数
0 1 1     边
0 2 3
1 2 1
 
0 2   起点,终点
3 1
0 1 1
1 2
 
Sample Output
2
1
 #include <iostream>
 #include <cstdio>
 using namespace std;
 #define Max 200+10
 #define INF 0x3f3f3f3f
 int cost[Max][Max];
 int lowcost[Max];
 bool vis[Max];
 int N,M;
 void dijkstra(int s)
 {
     int u,i,p;
     ;u<N;u++)
     {
         vis[u]=;
         lowcost[u]=INF;
     }
     lowcost[s]=;
     )
     {
         p=-;
         ;u<N;u++)
             ||lowcost[u]<lowcost[p]))
                 p=u;
         )    break;
         vis[p]=;
         ;u<N;u++)
             if(!vis[u]&&(lowcost[p]+cost[u][p])<lowcost[u])
                 lowcost[u]=lowcost[p]+cost[u][p];
     }
 }
 int main()
 {
     int i,j;
     int a,b,w,s,e;
     freopen("in.txt","r",stdin);
     while(~scanf("%d%d",&N,&M))
     {

         ;i<N;i++)
             ;j<N;j++)
                 ;
                 else    cost[i][j]=cost[j][i]=INF;

         ;i<M;i++)
         {
             scanf("%d%d%d",&a,&b,&w);
             if(w<cost[a][b])    cost[a][b]=cost[b][a]=w;        /*解决重边*/
         }
         scanf("%d%d",&s,&e);
         dijkstra(s);
         if(lowcost[e]==INF)
             printf("-1\n");
         else
             printf("%d\n",lowcost[e]);
     }
 }

最短路(Dijkstra模板题)的更多相关文章

  1. HDU 2544最短路dijkstra模板题

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. HDU 2544 最短路(模板题——Floyd算法)

    题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...

  3. hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题

    hdu 2544  求点1到点n的最短路  无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...

  4. 单源最短路——Dijkstra模板

    算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...

  5. POJ 2387 Til the Cows Come Home --最短路模板题

    Dijkstra模板题,也可以用Floyd算法. 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的. 写法1: #include <iostream> #include ...

  6. 基础最短路(模板 spfa)

    Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还 ...

  7. 基础最短路(模板 bellman_ford)

    Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店 ...

  8. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  9. HDU 2544 最短路(模板题)

    求1到N的最短路径,模板题,以1为源点,用dijkstra算法(可以用优先级队列优化) #include <iostream> #include <algorithm> #in ...

随机推荐

  1. Java线程:创建与启动

    Java线程:创建与启动 一.定义线程   1.扩展java.lang.Thread类.   此类中有个run()方法,应该注意其用法: public void run() 如果该线程是使用独立的 R ...

  2. codevs1958 刺激

    难度等级:黄金 1958 刺激 题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激过度导致拼写都缺了个字母),喜欢忽高忽低的感觉.现在S拿到 ...

  3. 【C++】rand()函数,时间种子

    srand((unsigned)time(NULL)); //以时间为随机种子,写在循环前才有效(几个循环无所谓) ;i<=size;i++) { ;j<=size;j++) { ==ra ...

  4. mouseover和mouseenter的区别

    mouseover和mouseenter都是鼠标事件. mouseover事件,当鼠标穿过被选元素的时候,若此元素有子元素,子元素也会被触发此事件.即是使用mouseover事件,会多次触发此元素. ...

  5. SQL如何查询两个表的数据

    在进行查询操作时,我们通常需要查询两个关联表的数据,我们可以使用where语句进行查询,如: select Emp.E_Id,Company.C_OraName from Emp,Company wh ...

  6. 通过ssh秘钥的方式可以连接上CE68交换机

    结论:按照CE68交换机的用户手册中的指导,可以通过ssh 秘钥的方式连接上交换机. 1.先按照eNSP连接到网卡的方式,给CE68配置一个ip地址: 192.168.56.2 2.按照交换机的用户指 ...

  7. php+Mysql页面注册代码

    页面设置代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...

  8. Hive入门教程

    Hive 安装 相比起很多教程先介绍概念,我喜欢先动手装上,然后用例子来介绍概念.我们先来安装一下Hive 先确认是否已经安装了对应的yum源,如果没有照这个教程里面写的安装cdh的yum源http: ...

  9. C++学习-5

    1.static_cast静态转换<>要转换的类型,不适用于指针转换 reinterpret_cast<char*>()指针类型的转换 涉及到const,必须用const_ca ...

  10. Vue-Router模式、钩子

    转:https://www.cnblogs.com/heioray/p/7193841.html 模式 vue-router中的模式选项主要在router实例化的时候进行定义的,如下 const ro ...