hdu6005 Pandaland 想法+dijkstra
2024-08-27 08:37:16
/**
题目: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 ;
}
最新文章
- swift 新特性
- fdatool 设计IIR滤波器
- android Json Gson FastJson 解析
- Python快速教程目录(转)
- Python 操作 mongodb 数据库
- 在x86转x64的开发过程会遇到各种意外的问题,比如MSScriptControl 在x64下
- 清除目录下的SVN信息
- 常见排序算法(PHP实现)
- Android学习总结——Content Provider
- Oracle EBS-SQL (PO-11):检查采购订单退货数.sql
- POJ 3450 Corporate Identity(KMP)
- 图像相似度计算之哈希值方法OpenCV实现
- 使用 nvm 来管理nodejs版本 。
- C++STL(vector,map,set,list)成员函数整理
- pandas.DataFrame学习系列1——定义及属性
- svn: resource out of date; try updating的解决
- CentOS7搭建时间服务器-chrony(不坑)
- Java 多线程(五)—— 线程池基础 之 FutureTask源码解析
- SQL Server DATEADD() 函数及实际项目应用注意事项
- mysql学习之路_高级数据操作
热门文章
- rails执行sidekiq任务的时候报错“can&#39;t connect to local mysql server through socket &#39;/var/run/mysqld/mysqld.sock&#39;”
- Python中生成(写入数据到)Excel文件
- openerp 6.0.2库存业务
- 一学就会之ado.net(一)
- One simple WPF &; C# RayTracer
- centos7 install flash player
- LoadRunner访问Mysql数据库(转)
- sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业,必须执行SVC
- java文档 第十一章 其他考量-b
- js错误处理和调试