http://poj.org/problem?id=2387

一个dijkstra的模板题

#include <stdio.h>
#include <string.h>
#define inf 999999; int graph[ ][ ];
bool mark[ ];
int m,n; void dijkstra()
{
int d[ ],k,Min;
bool mark[ ];
for(int i = ; i <= n ; i++) //对d[i]进行初始化
{
mark[ i ] = false;
d[ i ] = graph[ ][ i ];
}
for(int i = ; i <= n ; i++)
{
Min=inf;
for(int j = ; j <= n ; j++)
{
if(!mark[ j ] && d[ j ] < Min)
{
k = j;
Min = d[ j ];
}
}
mark[ k ] = true; for(int j = ; j <= n ; j++)
{
if(!mark[ j ] && d[ j ] > graph[ k ][ j ] + d[ k ])
d[ j ] = graph[ k ] [ j ] + d[ k ];
}
}
printf("%d\n",d[n]);
} int main()
{
int a,b,c;
while(~scanf("%d%d",&m,&n)){
for(int i = ; i <= n ; i++)
for(int j = ; j <= n ; j++)
if(i == j)
graph[ i ][ j ] = ;
else
{
graph[ i ][ j ] = inf;
graph[ j ][ i ] = inf;
}
for(int i = ; i <= m ;i++)
{
scanf("%d%d%d",&a,&b,&c);
if(graph[ a ][ b ] > c)
{
graph[ a ][ b ] = c;
graph[ b ][ a ] = c;
}
}
dijkstra();
}
return ;
}

dijkstra +head

 const int N=;
struct rec
{
int v,w;//v代表所连的值,W代表权值
}; vector<rec> edge[N*N];
int n,st,ed;
long long dis[N*N];
bool vis[N*N]; struct cmp
{
bool operator()(int a,int b)
{
return dis[a]>dis[b];
}
}; void Dijkstra()
{
priority_queue<int,vector<int>,cmp> Q;
memset(dis,-,sizeof(dis));
memset(vis,,sizeof(vis));
int i,u,v;
Q.push(st);
dis[st]=;
while(!Q.empty())
{
u=Q.top();
Q.pop();
vis[u]=;
if(u==st)
break;
if(dis[v]==- || dis[v]<dis[u]*edge[u][i].w)
{
dis[v]=dis[u]*edge[u][i].w;
if(!vis[v])
{
vis[v]=;
Q.push(v);
}
}
}
}
}
for(i=; i<edge[u].size(); i++)
{
v=edge[u][i].v;
if(dis[v]==- || dis[v]<dis[u]*edge[u][i].w)
{
dis[v]=dis[u]*edge[u][i].w;
if(!vis[v])
{
vis[v]=;
Q.push(v);
}
}
}
}
}

poj 2378 (dijkstra)的更多相关文章

  1. Tree Cutting POJ - 2378 (树形DP)

    题目链接:POJ - 2378 题目大意:给你n个点,然后问你这n个点中 ,去除哪些点能够使得剩下的图中最大的连通块中点的个数不超过n/2. 具体思路:第一遍dfs记录每一个点代表的子树大小,第二遍d ...

  2. POJ 2378 Tree Cutting 3140 Contestants Division (简单树形dp)

    POJ 2378 Tree Cutting:题意 求删除哪些单点后产生的森林中的每一棵树的大小都小于等于原树大小的一半 #include<cstdio> #include<cstri ...

  3. POJ 1062 ( dijkstra )

    http://poj.org/problem?id=1062 一个中文题,一个多月之前我做过,当时我是用搜索写的,不过苦于卡在无法确定等级关系,所以就错了. 看了别人的博客后,我还是不是很理解所谓的枚 ...

  4. poj 2378(树形dp)

    题目链接:http://poj.org/problem?id=2378 思路:num[u]表示以u为根的子树的顶点个数(包括),如果去掉u之后u的每棵子树都小于等于n/2,则选择u. #include ...

  5. Poj(2253),Dijkstra松弛条件的变形

    题目链接:http://poj.org/problem?id=2253 题意: 给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通 ...

  6. Poj(1797) Dijkstra对松弛条件的变形

    题目链接:http://poj.org/problem?id=1797 题意:从路口1运货到路口n,最大的运货重量是多少?题目给出两路口间的最大载重. 思路:j加到s还是接到K下面,取两者的较大者,而 ...

  7. POJ 2378 Tree Cutting (DFS)

    题目链接:http://poj.org/problem?id=2378 一棵树,去掉一个点剩下的每棵子树节点数不超过n/2.问有哪些这样的点,并按照顺序输出. dfs回溯即可. //#pragma c ...

  8. POJ 2378.Tree Cutting 树形dp 树的重心

    Tree Cutting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4834   Accepted: 2958 Desc ...

  9. 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 ...

随机推荐

  1. Memcached【Magent+Memcached】集群

    Memcached介绍  事件处理libevent是个程序库,它将Linux的epoll.BSD类操作系统的kqueue等事件处理功能封装成统一的接口.即使对服务器的连接数增加,也能发挥O(1)的性能 ...

  2. 缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别

    先看MSDN上的解释: HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象. HttpRuntime.Cache:获取当前应用程序的Cache.  我们再用. ...

  3. Ajax 局部刷新

    方式一:function hits1(troops) {    var troops = troops;    var ajax=Ajax();    var url = 'xxx.php';    ...

  4. 关于Windows下安装mongodb和加入Windows系统启动项

    .首先:在http://www.mongodb.org/downloads官网下载最新的win版本的mongodb下载包(我下载到d盘) .加压缩,修改文件夹名字为mongodb,建立放数据库文件夹w ...

  5. nginx专题

    1.Nginx和php性能优化相关 专家向磊http://slaytanic.blog.51cto.com/2057708/1173021 2.Puppet利用Nginx多端口实现负载均衡http:/ ...

  6. ytkah网站建设解决方案 大中小微企业营销利器

    为大中小微企业提供网站设计制作优化服务,PC移动微网站三合一,抢占市场先机.读万卷书不如走万里路,走万里路不如阅人无数.说再多空洞无物不如上案例几簇 优秀案例展示,上市公司人人网旗下游戏<天书奇 ...

  7. Java中将unix时间戳转化为正常显示时间

    在unix中时间戳是一串数字表示的,使用起来非常不方便,转化方式如下: //Convert Unix timestamp to normal date style public String Time ...

  8. C#操作Excel的技巧与方法 设置单元格等

    C#操作Excel可以分为客户端和插件版本,区别就是是否需要Excel环境,功能实现一样 一.通用操作与处理(有点乱有时间再整理) 1:工程对excel类库的导入,如: c:\program file ...

  9. Knockout.Js案例一Introduction

    </strong></p> <p>Last name: <strong data-bind="text:lastName ">tod ...

  10. word文档的生成、修改、渲染、打印,使用Aspose.Words

    无需MS Word也可执行各种文档处理任务,包括文档的生成.修改.渲染.打印,文档格式转换和邮件合并等文档处理.