杭电1874畅通project绪
畅通project续
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 26362 Accepted Submission(s): 9470
如今,已知起点和终点,请你计算出要从起点到终点,最短须要行走多少距离。
每组数据第一行包括两个正整数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),分别代表起点和终点。
3 3
0 1 1
0 2 3
1 2 1
0 2
3 1
0 1 1
1 2
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绪的更多相关文章
- 杭电1863 畅通project
畅通project Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 杭电1232畅通project
畅通project Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 畅通project续HDU杭电1874【dijkstra算法 || SPFA】
http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了非常多年的畅通project计划后.最终修建了非常多 ...
- hdoj 1874 畅通project续【SPFA】
畅通project续 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Su ...
- HDU 1874 畅通project续 最短路径入门(dijkstra)
Problem Description 某省自从实行了非常多年的畅通project计划后,最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案 ...
- HDU 1874 畅通project续 (最短路径)
畅通project续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDOJ 1874 畅通project续
畅通project续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【floyd】HDU 1874 畅通project续
之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放. 非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种. 1.单源最短路 ...
- hdu 1874 畅通project续
最短路问题,尽管a!=b,可是同一条路測评数据会给你非常多个.因此在读入的时候要去最短的那条路存起来.........见了鬼了.坑爹 #include<iostream> #include ...
随机推荐
- BZOJ 1008 越狱 (组合数学)
题解:正难则反,从总数中减去全部相邻不相同的数目就是答案,n*(n-1)^(m-1):第一个房间有n中染色方案,剩下m-1个房间均只有n-1种染色方案,用总数减就是答案. #include <c ...
- HDU 2147 kiki's game
题解:画图可得当横纵坐标均为奇数时为必败态…… #include <cstdio> int main(){ int a,b; while(scanf("%d%d",&a ...
- poj 2153 Rank List(查找,Map)
题目链接:http://poj.org/problem?id=2153 思路分析: 判断Li Ming的成绩排名,需要在所有的数据章查找成绩比其高的人的数目,为查找问题. 查找问题可以使用Hash表, ...
- selenium - Headless Browser and scraping - solutions - Stack Overflow
yum install pygtk2-devel selenium - Headless Browser and scraping - solutions - Stack Overflow Hea ...
- Java-线程间通信
Java-线程间通信 一 线程通讯 就是多个线程操作同一个资源,可是操作的动作不同 二 停止线程: 控制住run的循环就能够控制线程结束 当线程处于冻结状态,就不会读取标记,线程就不会结束 inter ...
- sqlite性能简单測试
主要測试sqlite在大数据量下的插入及查询性能: 測试环境:Centos6.4 1G内存 单核 数据量 大小 索引字段检索(耗时) 非索引字段检索(耗时) 总插入时间 10W 19M 0.001 ...
- rman 使用catalog备份的演示
介绍了如何使用catalog方式做RMAN备份,以及如何取消以catalog方式做备份. 第一步:创建RMAN CATALOG表空间及用户. [oracle@oel-01 ~]$ sqlplus / ...
- 关于var(string)++的类型自动转换
展示时间: var miao="50"; var fen="59"; var shi="00"; setInterval(fun, 1000 ...
- Ext JS学习第二天 我们所熟悉的javascript(一)
此文用来记录学习笔记: •ExtJS是一个强大的javascript框架,如果想真正的掌握ExtJS,那么我们必须要对javascript有一定的认识,所以很有必要静下心来,抱着一本javascrip ...
- Longest Substring Without Repeating Characters - 哈希与双指针
题意很简单,就是寻找一个字符串中连续的最长包含不同字母的子串. 其实用最朴素的方法,从当前字符开始寻找,找到以当前字符开头的最长子串.这个方法猛一看是个n方的算法,但是要注意到由于字符数目的限制,其实 ...