hdu6005 Pandaland 想法+dijkstra
/**
题目: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的更多相关文章
- 【HDU 6005】Pandaland(Dijkstra)
Problem Description Mr. Panda lives in Pandaland. There are many cities in Pandaland. Each city can ...
- 最小环(floyd以及dijkstra实现+例题)
最小环定义 最小环是指在一个图中,有n个节点构成的边权和最小的环(n>=3). 一般来说,最小环分为有向图最小环和无向图最小环. 最小环算法: 直接暴力: 设\(u\)和\(v\)之间有一条边长 ...
- HDU 6005 Pandaland (Dijkstra)
题意:给定一个图,找出一个最小环. 析:暴力枚举每一条,然后把边设置为最大值,以后就不用改回来了,然后跑一遍最短路,跑 n 次就好. 代码如下: #pragma comment(linker, &qu ...
- 最短路径算法-Dijkstra算法的应用之单词转换(词梯问题)(转)
一,问题描述 在英文单词表中,有一些单词非常相似,它们可以通过只变换一个字符而得到另一个单词.比如:hive-->five:wine-->line:line-->nine:nine- ...
- (简单) POJ 1062 昂贵的聘礼,Dijkstra。
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家 拿不出这么多金币,便请求酋长降 ...
- 图上最短路(Dijkstra, spfa)
单源最短路径 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度. 输入输出格式 输入格式: 第一行包含三个整数N.M.S,分别表示点的个数.有向边的个数.出发点的编号. 接下来 ...
- LOJ #2718. 「NOI2018」归程(Dijkstra + Kruskal重构树 + 倍增)
题意 给你一个无向图,其中每条边有两个值 \(l, a\) 代表一条边的长度和海拔. 其中有 \(q\) 次询问(强制在线),每次询问给你两个参数 \(v, p\) ,表示在 \(v\) 出发,能开车 ...
- dijkstra 的优先队列优化
既然要学习算法,就要学习到它的精髓,才能够使用起来得心应手. 我还是远远不够啊. 早就知道,dijkstra 算法可以用优先队列优化,我却一直不知道该怎样优化.当时,我的思路是这样的:假设有n个顶点, ...
- 隐式Dijkstra:在状态集合中用优先队列求前k小
这种技巧是挺久以前接触的了,最近又突然遇到几道新题,于是总结了一下体会. 这种算法适用的前提是,标题所述的"状态集合"大到不可枚举(否则枚举就行了qaq) ...
随机推荐
- scrapy-splash抓取动态数据例子四
一.介绍 本例子用scrapy-splash抓取微众圈网站给定关键字抓取咨询信息. 给定关键字:打通:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 二.网站信息 ...
- Java中的SPI(Service Provider Interface)
转自:http://singleant.iteye.com/blog/1497259 最近看到公司的一些框架和之前看到的开源的一些框架的一些服务发现和接入都采用了java的spi机制. 所以简单的总结 ...
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
在ORACLE用户下的定时器设置 [oracle@SHARKDB dbscripts]$ crontab -l# minute hour day month week15 1 * * 0 sh / ...
- PHP定时执行计划任务
一.Windows计划任务 在web 服务下新建需要执行的文件 二.新建bat文件,命名为test.bat,内容如下: D:\php\php.exe -q D:\website\test.php 三. ...
- [Tools] Unlock TypeScript's Features in Vanilla JS with @ts-check and JSDoc
TypeScript can help you with your plain JavaScript files if you add a simple //@ts-check comment. Th ...
- Android Exception 12(has leaked ServiceConnection)
09-09 15:12:31.154: E/ActivityThread(18855): Activity com..xxx.xx.act.LoadingAct has leaked ServiceC ...
- stderr和stdout详细解说(转)
今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...
- JavaScript | 创建对象的9种方法详解
————————————————————————————————————————————————————————— 创建对象 标准对象模式 "use strict"; // *** ...
- expect脚本免密码
#!/usr/bin/expect set timeout spawn ssh root@20.0.102.19 expect "password:" send "123 ...
- 带 IK 分词器的 Luke 和 搜索应用服务器solr
首先在网上查了一下: Solr Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索 ...