畅通project续

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 26362    Accepted Submission(s): 9470

Problem Description
某省自从实行了非常多年的畅通project计划后,最终修建了非常多路。只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案要比还有一些方案行走的距离要短非常多。这让行人非常困扰。



如今,已知起点和终点,请你计算出要从起点到终点,最短须要行走多少距离。
Input
本题目包括多组数据,请处理到文件结束。

每组数据第一行包括两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目。城镇分别以0~N-1编号。

接下来是M行道路信息。每一行有三个整数A,B,X(0<=A,B<N,A!=B,0<X<10000),表示城镇A和城镇B之间有一条长度为X的双向道路。

再接下一行有两个整数S,T(0<=S,T<N),分别代表起点和终点。
Output
对于每组数据,请在一行里输出最短须要行走的距离。假设不存在从S到T的路线,就输出-1.
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

这道题也是非常easy的最短路问题,刚開始错了,是由于没考虑到起点和终点一样,这样就直接输出0,还有是要注意考虑重边。

代码:

#include<stdio.h>

#include<string.h>

#define INF 1 << 30

int A , B , X ;

int S , T ;//代表起点和终点

int map[201][201] ;

int dis[201] ;

int used[201] ;

//输入函数,而且存图

void input(int N ,int M)

{

 A = 0 ;

 B = 0 ;

 X = 0 ;

 S = 0 ;

 T = 0 ;

 for(int i = 0 ; i < 201 ; i++)

 {

  for(int j = 0 ; j < 201 ; j++)

  {

   map[i][j] = INF ;

  }

  dis[i] = INF ;

  used[i] = 0 ;

 }

 for( i = 0 ; i < M ; i++)

 {

  scanf("%d%d%d", &A , &B , &X);

  if(map[A][B] > X)

  {

   map[A][B] = X ;

   map[B][A] = X ;

  }

 }

 scanf("%d%d" , &S , &T );

}

//dijstra函数是求最短路

void dijstra(int N)

{

 bool r ;

 for(int i = 0 ; i < N ; i++ )

 {

  int min = INF ;

  int c = 0 ;

  r = false ;

  for(int j = 0 ; j < N ; j++)

  {

   if(!used[j] && dis[j] < min)

   {

    min = dis[j] ;

    c = j ;

    r = true ;

   }

  }

  if(!r)

   return ;

  used[c] = 1 ;

  for(j = 0 ; j < N ; j++)

  {

   if(!used[j] && dis[j] > dis[c] + map[c][j])

    dis[j] = dis[c] + map[c][j] ;

  }

 }

}

int main()

{

 int N = 0 , M = 0 ;

 while(~scanf("%d%d" , &N , &M))

 {

        input( N ,M);

  

  dis[S] = 0 ;

  dijstra( N ) ;

  if(S == T)

   printf("0\n");

  else

  {

   if(dis[T] != INF)

    printf("%d\n",dis[T]);

   else

    printf("-1\n");

  }

  memset(map,0,sizeof(map)) ;

 }                                                                                                                                                                                                                                                                                                                                 


 return 0 ;

}

杭电1874畅通project绪的更多相关文章

  1. 杭电1863 畅通project

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. 杭电1232畅通project

    畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  3. 畅通project续HDU杭电1874【dijkstra算法 || SPFA】

    http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多 ...

  4. hdoj 1874 畅通project续【SPFA】

    畅通project续 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Su ...

  5. HDU 1874 畅通project续 最短路径入门(dijkstra)

    Problem Description 某省自从实行了非常多年的畅通project计划后,最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案 ...

  6. HDU 1874 畅通project续 (最短路径)

    畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. HDOJ 1874 畅通project续

    畅通project续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. 【floyd】HDU 1874 畅通project续

    之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放. 非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种. 1.单源最短路 ...

  9. hdu 1874 畅通project续

    最短路问题,尽管a!=b,可是同一条路測评数据会给你非常多个.因此在读入的时候要去最短的那条路存起来.........见了鬼了.坑爹 #include<iostream> #include ...

随机推荐

  1. HDU 1240 Asteroids!

    三维广搜 #include <cstdio> #include <iostream> #include <cstring> #include <queue&g ...

  2. HDU 1551 Cable master

    题解:很显然的二分检索,在算法艺术上看过原题,不过这里要注意精度: #include <cstdio> int n,m; ]; bool test(double x){ ,i; ;i< ...

  3. 2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

    有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(f ...

  4. 配置hibernate数据库连接

    第一步:右键项目->MyEclipse->添加Hibernate组件,指定数据库连接配置如下(src/hibernate.cfg.xml) MySQL对连接的有效期是28800s,一个连接 ...

  5. spring注解controller示例

    依赖库 spring 3.0 配置web.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <w ...

  6. Objective-c 类实现 (@implementation)

    在用@interface声明类之后,可以使用@implementation进行实类的实现.类的实现的具体语法如下: @implementation 类名 方法实现代码; @end; 实例: @impl ...

  7. js和jQuery写简单下拉菜单

    1.jQuery写法 <head> <meta http-equiv="Content-Type" content="text/html; charse ...

  8. BZOJ 2006: [NOI2010]超级钢琴( RMQ + 堆 )

    取最大的K个, 用堆和RMQ来加速... ----------------------------------------------------------------- #include<c ...

  9. linux安装LNMP的资源

    wget http://nginx.org/download/nginx-0.7.69.tar.gz wget http://museum.php.net/php5/php-5.2.10.tar.gz ...

  10. POJ 1330 Nearest Common Ancestors LCA题解

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19728   Accept ...