POJ 2387
最短路模板 dij 和 spfa 都可以
spfa:
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<string>
#include<math.h>
#include<queue>
#include<algorithm>
#include<iostream>
#include<stdlib.h>
#include<cmath> #define INF 0x3f3f3f3f
#define MAX 4*100105 using namespace std; struct node
{
int u,v,len,next;
}Map[MAX]; int n,m,vis[MAX],dist[MAX],k,a[MAX]; void Add(int u,int v,int len)
{
Map[k].u=u;
Map[k].v=v;
Map[k].len=len;
Map[k].next=a[u];
a[u]=k++;
} void Init()
{
k=1; memset(vis,0,sizeof(vis)); for(int i=0;i<MAX;i++)
{
dist[i]=INF;
a[i]=-1;
}
} int spfa()
{
queue<int>Q; int start=1,k; dist[1]=0;
vis[1]=1;
Q.push(start); while(!Q.empty())
{
start=Q.front();
Q.pop(); vis[start]=0;
for(k=a[start];k!=-1;k=Map[k].next)
{
int v=Map[k].v; if(dist[v] > dist[start]+Map[k].len)
{
dist[v]=dist[start]+Map[k].len; if(!vis[v])
{
vis[v]=1;
Q.push(v);
}
}
}
} return 1;
} int main()
{
int i,j,u,v,len; while(scanf("%d%d",&m,&n)!=EOF)
{
Init(); for(i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&len); Add(u,v,len);
Add(v,u,len);
} int ans=spfa(); if(ans)
printf("%d\n",dist[n]);
} return 0;
} dij:
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<string>
#include<math.h>
#include<queue>
#include<algorithm>
#include<iostream>
#include<stdlib.h>
#include<cmath> #define INF 0x3f3f3f3f
#define MAX 1005 using namespace std; int Map[MAX][MAX],vis[MAX],dist[MAX],n,m; int dij()
{
memset(vis,0,sizeof(vis)); int i,j,k,minn; for(i=2;i<=n;i++)
dist[i]=Map[1][i]; vis[1]=1; for(i=1;i<n;i++)
{
minn=INF;
for(j=1;j<=n;j++)
{
if(!vis[j] && minn > dist[j])
{
k=j;
minn=dist[j];
}
} vis[k]=1; for(j=1;j<=n;j++)
{
if(!vis[j] && dist[k] + Map[k][j] < dist[j])
{
dist[j]=dist[k]+Map[k][j];
}
}
} return dist[n];
} int main()
{
int i,j,u,v,len; while(scanf("%d%d",&m,&n)!=EOF)
{ for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
Map[i][j]=INF; for(i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&len); Map[u][v]=Map[v][u]=min(Map[u][v],len);
} int ans=dij(); printf("%d\n",ans);
}
return 0;
}
POJ 2387的更多相关文章
- 链式前向星版DIjistra POJ 2387
链式前向星 在做图论题的时候,偶然碰到了一个数据量很大的题目,用vector的邻接表直接超时,上网查了一下发现这道题数据很大,vector可定会超的,不会指针链表的我找到了链式前向星这个好东西,接下来 ...
- 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 ...
- POJ 2387 Til the Cows Come Home (图论,最短路径)
POJ 2387 Til the Cows Come Home (图论,最短路径) Description Bessie is out in the field and wants to get ba ...
- POJ.2387 Til the Cows Come Home (SPFA)
POJ.2387 Til the Cows Come Home (SPFA) 题意分析 首先给出T和N,T代表边的数量,N代表图中点的数量 图中边是双向边,并不清楚是否有重边,我按有重边写的. 直接跑 ...
- POJ 2387 Til the Cows Come Home
题目链接:http://poj.org/problem?id=2387 Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K ...
- POJ 2387 Til the Cows Come Home(模板——Dijkstra算法)
题目连接: http://poj.org/problem?id=2387 Description Bessie is out in the field and wants to get back to ...
- poj 2387 Til the Cows Come Home(dijkstra算法)
题目链接:http://poj.org/problem?id=2387 题目大意:起点一定是1,终点给出,然后求出1到所给点的最短路径. 注意的是先输入边,在输入的顶点数,不要弄反哦~~~ #incl ...
- POJ 2387 Til the Cows Come Home(dijkstra裸题)
题目链接:http://poj.org/problem?id=2387 题目大意:给你t条边(无向图),n个顶点,让你求点1到点n的最短距离. 解题思路:裸的dijsktra,注意判重边. 代码: # ...
- POJ 2387 链式前向星下的SPFA
(POJ)[http://poj.org/problem?id=2387] Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K ...
- Dijkstra单源最短路径,POJ(2387)
题目链接:http://poj.org/problem?id=2387 Dijkstra算法: //求某一点(源点)到另一点的最短路,算法其实也和源点到所有点的时间复杂度一样,O(n^2); 图G(V ...
随机推荐
- 消息同步调用-- ESFramework 4.0 进阶(07)
分布式系统的构建一般有两种模式,一是基于消息(如Tcp,http等),一是基于方法调用(如RPC.WebService.Remoting).深入想一想,它们其实是一回事.如果你了解过.NET的Prox ...
- LeetCode OJ 123. Best Time to Buy and Sell Stock III
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- poj 3278 Catch That Cow bfs
Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...
- mvc路由参数注解
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //过滤掉禁止访问的路由 routes.MapRoute( name: &quo ...
- mysql sql语句大全(转载)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...
- C - 哗啦啦村的扩建
C - 哗啦啦村的扩建 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 512000/256000KB (Java/Others) Sub ...
- 注册“Oracle Provider for OLE DB”和创建链接服务器
在sql server 数据库上创建链接服务器,连接oracle数据库,访问接口需要设置为:“Oracle Provider for OLE DB”. 如果电脑上没有这个驱动,安装一个完整的Oracl ...
- redis2--redis安装
(1)安装Redis Redis目前只支持Linux系统,因为开发此软件的创始者认为,Redis是为后台数据服务的,所以认为该软件使用在纯净的服务环境下,而不是应用型操作系统下,而Linux作为服务器 ...
- tomcat各目录(文件)作用
以tomcat7.0.50为例,主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹 bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结 ...
- java代码如何读取properties文件
我们在开发工程中,有时候需要在Java代码中定义一些在部署生产环境时容易改变的变量,还需要我们单独放在一个外部属性文件中,方便我们将来修改.这里列出了两种比较方便的方式. 一.在Spring配置文件中 ...