/**
题目: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 ;
}

最新文章

  1. swift 新特性
  2. fdatool 设计IIR滤波器
  3. android Json Gson FastJson 解析
  4. Python快速教程目录(转)
  5. Python 操作 mongodb 数据库
  6. 在x86转x64的开发过程会遇到各种意外的问题,比如MSScriptControl 在x64下
  7. 清除目录下的SVN信息
  8. 常见排序算法(PHP实现)
  9. Android学习总结——Content Provider
  10. Oracle EBS-SQL (PO-11):检查采购订单退货数.sql
  11. POJ 3450 Corporate Identity(KMP)
  12. 图像相似度计算之哈希值方法OpenCV实现
  13. 使用 nvm 来管理nodejs版本 。
  14. C++STL(vector,map,set,list)成员函数整理
  15. pandas.DataFrame学习系列1——定义及属性
  16. svn: resource out of date; try updating的解决
  17. CentOS7搭建时间服务器-chrony(不坑)
  18. Java 多线程(五)—— 线程池基础 之 FutureTask源码解析
  19. SQL Server DATEADD() 函数及实际项目应用注意事项
  20. mysql学习之路_高级数据操作

热门文章

  1. rails执行sidekiq任务的时候报错“can&#39;t connect to local mysql server through socket &#39;/var/run/mysqld/mysqld.sock&#39;”
  2. Python中生成(写入数据到)Excel文件
  3. openerp 6.0.2库存业务
  4. 一学就会之ado.net(一)
  5. One simple WPF &amp; C# RayTracer
  6. centos7 install flash player
  7. LoadRunner访问Mysql数据库(转)
  8. sharepoint admin svc must be running in order to create deployment timer job 若要创建计时器作业,必须执行SVC
  9. java文档 第十一章 其他考量-b
  10. js错误处理和调试