畅通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. Filter 知识总结

    Filter对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压 ...

  2. Spark学习体系

    底理解Spark,能够分为以下几个层次. 1 Spark基础篇 1.1 Spark生态和安装部署 在安装过程中,理解其基本操作步骤. 安装部署 Spark安装简单介绍 Spark的源代码编译 Spar ...

  3. Android API 中文(76)——AdapterView.OnItemLongClickListener

    前言 本章内容是android.widget.AdapterView.OnItemLongClickListener,版本为Android 2.3 r1,翻译来自"cnmahj", ...

  4. 详细解说Android权限在安卓开发中

    android.permission.ACCESS_CHECKIN_PROPERTIES //允许读写访问”properties”表在checkin数据库中,改值可以修改上传 android.perm ...

  5. windows 2008 远程端口3389修改小记

    修改远程端口使服务器更加安全,win2008上大致与win2003的配置差不多,有些细微的差别,在此小记一下. 简要步骤: 1.打开远程连接功能(默认都是已经打开的) :开始>计算机>属性 ...

  6. Oracle查询数据中占用空间最大的表

    --第一步,查询istaudit数据库文件ID,文件路径 select file#,name from v$datafile where lower(name) like '%istaudit.dbf ...

  7. 抄书(B - 二分查找)

    抄书  (二分查找+贪心) 提示:二分查找一般写成非递归形式 时间复杂度:O(logn) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action? ...

  8. web.xml 的加载顺序

    context-param -> listener -> filter -> servlet

  9. Subsets 【dfs】

    Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...

  10. SQL分页存储过程(不支持多表联合查询,不支持多字段排序)

    CREATE PROCEDURE [dbo].[Pro_GetPageOfRecords] @PageSize INT=20, --分页大小 @CurrentPage INT, --第几页 @Clum ...