Dijkstra(最短路求解)
Dijkstra(最短路求解)
模板:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int maxn = 2005;
const int INF = 0x3f3f3f3f;
struct Edge{
    int u,v,next;
    LL w;
    bool operator < (const Edge & a)const
    {
        return w > a.w;
    }
}edge[maxn<<1] ;
int tot = 0,head[maxn];
bool vis[maxn];
LL dis[maxn];
void addedge(int u,int v,LL w)
{
    edge[tot] = (Edge){u,v,head[u],w
    };
    head[u] = tot++;
}
void Dijkstra()
{
    priority_queue<Edge>que;
    Edge p;
    memset(dis,INF,sizeof(dis));
    memset(vis,false,sizeof(vis));
    p.v = 1;
    que.push(p);
    dis[1] = 0;
    while (!que.empty())
    {
        p = que.top();
        que.pop();
        int u = p.v;
        if (vis[u]) continue;
        vis[u] = true;
        for (int i = head[u];i != -1;i = edge[i].next)
        {
            int v = edge[i].v;
            if (dis[u] + edge[i].w < dis[v])
            {
                dis[v] = dis[u] + edge[i].w;
                p.u = u,p.v = v,p.w = dis[v];
                que.push(p);
            }
        }
    }
}
int main()
{
    //freopen("input.txt","r",stdin);
    int T,N,u,v;
    LL w;
    memset(head,-1,sizeof(head));
    scanf("%d%d",&T,&N);
    for (int i = 0;i < T;i++)
    {
        scanf("%d%d%I64d",&u,&v,&w);
        addedge(u,v,w);
        addedge(v,u,w);
    }
    Dijkstra();
    printf("%I64d\n",dis[N]);
    return 0;
}

Dijkstra(最短路求解)的更多相关文章
- Dijkstra最短路算法
		Dijkstra最短路算法 --转自啊哈磊[坐在马桶上看算法]算法7:Dijkstra最短路算法 上节我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最 ... 
- dijkstra(最短路)和Prim(最小生成树)下的堆优化
		dijkstra(最短路)和Prim(最小生成树)下的堆优化 最小堆: down(i)[向下调整]:从第k层的点i开始向下操作,第k层的点与第k+1层的点(如果有)进行值大小的判断,如果父节点的值大于 ... 
- 【坐在马桶上看算法】算法7:Dijkstra最短路算法
		上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”.本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径 ... 
- Spfa(最短路求解)
		spfa(最短路求解) 模板: #include<iostream> #include<cstdio> #include<queue> #include<cs ... 
- POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】
		Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7214 Accepted: 2638 D ... 
- 洛谷 P1529 回家 Bessie Come Home Label:Dijkstra最短路 && 乱搞
		题目描述 现在是晚餐时间,而母牛们在外面分散的牧场中. 农民约翰按响了电铃,所以她们开始向谷仓走去. 你的工作是要指出哪只母牛会最先到达谷仓(在给出的测试数据中,总会有且只有一只最快的母牛). 在挤奶 ... 
- dijkstra 最短路算法
		最朴素的做法o(V*V/2+2E)~O(V^2)#include<iostream>using namespace std;#include<vector>#include&l ... 
- Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)
		上周我们介绍了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意两点的最短路径,这称为"多源最短路".本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做&q ... 
- TYVJ P1031 热浪 Label:dijkstra 最短路
		背景 USACO OCT09 9TH 描述 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer John此时以先 ... 
随机推荐
- set集合容器(常用的使用方法总结)
			关于C++STL中set集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. 构造set集合容器的目的是为了去重+排序+快速搜索.由于set集合容器实现了红黑树多的平衡二叉检索树的数据结构,在插 ... 
- MySQL 学习笔记 二
			Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后.按照函数返回的结果, 可以分为:多行函数和单行函数:所谓的单行函数就是将每条数据进行独立的计算,然 ... 
- 【Dubbo&&Zookeeper】1、Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
			转自:http://blog.csdn.net/congcong68/article/details/41113239 互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架 ... 
- A simple problem(hdu2522)
			A simple problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ... 
- Connect the Cities(hdu3371)并查集(附测试数据)
			Connect the Cities Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ... 
- Spring全家桶系列–[SpringBoot入门到跑路]
			//本文作者:cuifuan Spring全家桶————[SpringBoot入门到跑路] 对于之前的Spring框架的使用,各种配置文件XML.properties一旦出错之后错误难寻,这也是为什么 ... 
- linux系统编程:进程控制(fork)
			在linux中,用fork来创建一个子进程,该函数有如下特点: 1)执行一次,返回2次,它在父进程中的返回值是子进程的 PID,在子进程中的返回值是 0.子进程想要获得父进程的 PID 需要调用 ge ... 
- HDU6188
			Duizi and Shunzi Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ... 
- POJ2533(KB12-N LIS)
			Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 50827 Acc ... 
- DRF序列化
			1. 安装 pip install djangoframework 2. app注册 rest_framework INSTALLED_APPS = [ 'django.contrib.admin', ... 
