/**
题目:hdu6005 Pandaland
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6005
题意:给定一个带权无向图,求权值和最小的环的值,如果不存在环输出0; 思路:枚举每条边,然后dijkstra求s到t的距离,dijkstra过程中舍去s-t的这条边。
两个优化:dijkstra找到了t就跳出。或者出队列的距离>=当前找到的最小距离跳出。 */ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
typedef pair<int,int> P;
typedef long long LL;
const int N = 4e3+;
const int INF = 0x3f3f3f3f;
struct edge{int to, cost;};
int V, mis;
vector<edge> G[*N];
int d[N*+];
void dijkstra(int s,int t)
{
priority_queue<P,vector<P>, greater<P> > que;
fill(d,d+V,INF);
d[s] = ;
que.push(P(,s));
while(!que.empty()){
P p = que.top(); que.pop();
int v = p.second;
if(d[v]<p.first) continue;
if(v==t) break;
if(d[v]>=mis) break;
for(int i = ; i < (int)G[v].size(); i++){
edge e = G[v][i];
if(v==s&&e.to==t) continue;
if(d[e.to]>d[v]+e.cost){
d[e.to] = d[v]+e.cost;
que.push(P(d[e.to],e.to));
}
}
}
}
map<P,int> mp;
struct node
{
int u,v;
int cost;
}Eg[N];
int main()
{
int cas = , T, m;
cin>>T;
while(T--)
{
int cnt = ;
scanf("%d",&m);
int cost, x1, y1, x2, y2;
for(int i = ; i <= *N; i++) G[i].clear();
mp.clear();
for(int i = ; i <= m; i++){
scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&cost);
int u, v;
if(mp[P(x1,y1)]==){
mp[P(x1,y1)] = cnt++;
}
if(mp[P(x2,y2)]==){
mp[P(x2,y2)] = cnt++;
}
u = mp[P(x1,y1)], v = mp[P(x2,y2)];
G[u].push_back(edge{v,cost});
G[v].push_back(edge{u,cost});
Eg[i].cost = cost;
Eg[i].u = u;
Eg[i].v = v;
}
mis = INF;
V = cnt;
for(int i = ; i <= m; i++){
dijkstra(Eg[i].u,Eg[i].v);
mis = min(mis,d[Eg[i].v]+Eg[i].cost);
}
if(mis==INF){
printf("Case #%d: 0\n",cas++);
}else
printf("Case #%d: %d\n",cas++,mis);
}
return ;
}

hdu6005 Pandaland 想法+dijkstra的更多相关文章

  1. 【HDU 6005】Pandaland(Dijkstra)

    Problem Description Mr. Panda lives in Pandaland. There are many cities in Pandaland. Each city can ...

  2. 最小环(floyd以及dijkstra实现+例题)

    最小环定义 最小环是指在一个图中,有n个节点构成的边权和最小的环(n>=3). 一般来说,最小环分为有向图最小环和无向图最小环. 最小环算法: 直接暴力: 设\(u\)和\(v\)之间有一条边长 ...

  3. HDU 6005 Pandaland (Dijkstra)

    题意:给定一个图,找出一个最小环. 析:暴力枚举每一条,然后把边设置为最大值,以后就不用改回来了,然后跑一遍最短路,跑 n 次就好. 代码如下: #pragma comment(linker, &qu ...

  4. 最短路径算法-Dijkstra算法的应用之单词转换(词梯问题)(转)

    一,问题描述 在英文单词表中,有一些单词非常相似,它们可以通过只变换一个字符而得到另一个单词.比如:hive-->five:wine-->line:line-->nine:nine- ...

  5. (简单) POJ 1062 昂贵的聘礼,Dijkstra。

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家 拿不出这么多金币,便请求酋长降 ...

  6. 图上最短路(Dijkstra, spfa)

    单源最短路径 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来 ...

  7. LOJ #2718. 「NOI2018」归程(Dijkstra + Kruskal重构树 + 倍增)

    题意 给你一个无向图,其中每条边有两个值 \(l, a\) 代表一条边的长度和海拔. 其中有 \(q\) 次询问(强制在线),每次询问给你两个参数 \(v, p\) ,表示在 \(v\) 出发,能开车 ...

  8. dijkstra 的优先队列优化

    既然要学习算法,就要学习到它的精髓,才能够使用起来得心应手. 我还是远远不够啊. 早就知道,dijkstra 算法可以用优先队列优化,我却一直不知道该怎样优化.当时,我的思路是这样的:假设有n个顶点, ...

  9. 隐式Dijkstra:在状态集合中用优先队列求前k小

    这种技巧是挺久以前接触的了,最近又突然遇到几道新题,于是总结了一下体会. 这种算法适用的前提是,标题所述的"状态集合"大到不可枚举(否则枚举就行了qaq) ...

随机推荐

  1. linux grep的选项

    grep  -i          关闭大写和小写敏感性 grep      -v    打印全部不包括. . 的行(屏蔽某些条目) grep     -l     打印包括模式的文件名称 grep  ...

  2. 在移动网页网页上点击链接跳转到QQ聊天界面

    打开qq聊天窗口的方法 <a href="http://wpa.qq.com/msgrd?v=3&uin=1450612626&site=qq&menu=yes ...

  3. 简单的混淆ID

    public class TestfuzzId { public static void main(String[] args) { int id = 123456; int p = id^Integ ...

  4. 教你用webgl快速创建一个小世界

    收录待用,修改转载已取得腾讯云授权 作者:TAT.vorshen Webgl的魅力在于可以创造一个自己的3D世界,但相比较canvas2D来说,除了物体的移动旋转变换完全依赖矩阵增加了复杂度,就连生成 ...

  5. .Net Framemwork 之 值类型和引用类型的存储

    C#把数据类型分为两种:值类型 和 引用类型.值类型存储在堆栈中,而引用类型存储在托管堆上. 一.值类型和引用类型变量的存储 首先,变量是存储信息的基本单元,而对于计算机内部来说,变量就相当于一块内存 ...

  6. Core Data 多表连接及查询

    一:先建议两张表 Person,Score 分别代表,学生表,分数表 在 Person的Relationships里面建立关系,指向分数score 二:coreData生成的两个表: Person @ ...

  7. 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n ...

  8. ES6 数值扩展

    1.Number.isNan 和 Number.isFinite Number.isNaN()用来检查一个值是否为NaN Number.isNaN(NaN) // true Number.isNaN( ...

  9. 读-《c++设计新思维-泛型编程与设计模式之应用》经典记录(英文书名:《modern c++ design》)

    1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done ...

  10. 解决虚拟机 centos 网络服务启动

    现象: 1. 通过 ip addr 显示 eno16777736 适配器为 DOWN 状态 2. service status network 显示以下日志: .... 11月 05 15:30:10 ...