hdu6005找带权最小环
题意:给你点和边,让你找最小环的权值,其权值是所有边权的和,没环输出-1。
解法:枚举每一条边,找到其端点,做最短路。、
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
const int N=8e3+;
const int INF=0x3f3f3f3f;
int head[N],tot,dis[N],ans;
pair<int,int>aa,bb;
map<pair<int,int>,int>mp;
bool vis[N];
struct node
{
int u,to,next,w;
} e[N*N];
void add(int u,int v,int w)
{
e[tot].u=u;
e[tot].to=v;
e[tot].next=head[u];
e[tot].w=w;
head[u]=tot++;
}
struct ct
{
int w,id;
bool operator < (const ct &A)const
{
return w>A.w;
}
};
int dij(int s,int t,int ban)
{
memset(dis,INF,sizeof(dis));
memset(vis,,sizeof(vis));
priority_queue<ct>Q;
dis[s]=;
ct q,p;
q.w=,q.id=s;
Q.push(q);
while(!Q.empty())
{
q=Q.top();
Q.pop();
int u=q.id;
if(q.w>=ans) return -;
if(vis[u]) continue;
if(u==t) return q.w;
vis[u]=;
for(int i=head[u]; ~i; i=e[i].next)
{
if(i==ban||(i^)==ban) continue;
int v=e[i].to;
if(dis[v]>dis[u]+e[i].w)
{
dis[v]=dis[u]+e[i].w;
p.w=dis[v],p.id=v;
Q.push(p);
}
}
}
return -;
}
int main()
{
int T,tas=;
for(scanf("%d",&T); T--;)
{
int n,x,now=;
memset(head,-,sizeof(head));
tot=;
scanf("%d",&n);
mp.clear();
for(int i=; i<=n; ++i)
{
scanf("%d%d%d%d%d",&aa.first,&aa.second,&bb.first,&bb.second,&x);
if(!mp[aa]) mp[aa]=++now;
if(!mp[bb]) mp[bb]=++now;
add(mp[aa],mp[bb],x);
add(mp[bb],mp[aa],x);
}
ans=;
for(int i=; i<tot; i+=)
{
int w,u=e[i].u,v=e[i].to;
w=dij(u,v,i);
if(w!=-) ans=min(ans,w+e[i].w);
}
if(ans==) ans=;
printf("Case #%d: %d\n",tas++,ans);
}
}
hdu6005找带权最小环的更多相关文章
- 带权图的最短路径算法(Dijkstra)实现
一,介绍 本文实现带权图的最短路径算法.给定图中一个顶点,求解该顶点到图中所有其他顶点的最短路径 以及 最短路径的长度.在决定写这篇文章之前,在网上找了很多关于Dijkstra算法实现,但大部分是不带 ...
- POJ 2912 Rochambeau(难,好题,枚举+带权并查集)
下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7 题意:有N个人玩剪刀石头布, ...
- 【带权并查集】【HDU3038】【How Many Answers Are Wrong】d s
这个题看了2天!!!最后看到这篇题解才有所明悟 转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298091.html ---by 墨染之樱 ...
- DP的各种优化(动态规划,决策单调性,斜率优化,带权二分,单调栈,单调队列)
前缀和优化 当DP过程中需要反复从一个求和式转移的话,可以先把它预处理一下.运算一般都要满足可减性. 比较naive就不展开了. 题目 [Todo]洛谷P2513 [HAOI2009]逆序对数列 [D ...
- 无向带权图的最小生成树算法——Prim及Kruskal算法思路
边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权. 最小生成树(MST):权值最小的生成树. 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路.可以 ...
- poj1417(带权并查集+背包DP+路径回溯)
题目链接:http://poj.org/problem;jsessionid=8C1721AF1C7E94E125535692CDB6216C?id=1417 题意:有p1个天使,p2个恶魔,天使只说 ...
- 某种带权有向无环图(graph)的所有路径的求法
// 讨论QQ群:135202158 最近做某个东西,最后用图实现了,这里总结一下算法. 假设有以下带权有向无环图(连通或非连通,我这里用的是非连通的): 每个节点(node)可能与其他节点有向地相连 ...
- POJ - 2912 Rochambeau (带权并查集+枚举)
题意:有N个人被分为了三组,其中有一个人是开了挂的.同组的人的关系是‘=’,不同组的人关系是‘<’或'>',但是开了挂的人可以给出自己和他人任意的关系.现在要根据M条关系找出这个开了挂的人 ...
- poj1182 食物链 带权并查集
题目传送门 题目大意:大家都懂. 思路: 今天给实验室的学弟学妹们讲的带权并查集,本来不想细讲的,但是被学弟学妹们的态度感动了,所以写了一下这个博客,思想在今天白天已经讲过了,所以直接上代码. 首先, ...
随机推荐
- java 8中构建无限的stream
目录 简介 基本使用 自定义类型 总结 java 8中构建无限的stream 简介 在java中,我们可以将特定的集合转换成为stream,那么在有些情况下,比如测试环境中,我们需要构造一定数量元素的 ...
- 使用spring boot创建fat jar APP
文章目录 介绍 build和run fat jar和 fat war 更多配置 介绍 在很久很很久以前,我们部署web程序的方式是怎么样的呢?配置好服务器,将自己写的应用程序打包成war包,扔进服务器 ...
- 自动化部署jenkins
jenkins下载网站 https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/ 一.配置环境 [root@localhost ~]# hostname ...
- gitlab环境部署
一:配置主机名 [root@localhost ~]# hostname gitlab[root@localhost ~]# bash 二:安装依赖包 [root@gitlab ~]# yum -y ...
- 解读网易易盾新一代IoT安全编译器Maze
一.网易易盾为什么会推出安全编译器Maze? 随着5G时代的到来,会有越来越多的物联网设备走进我们的生活,然而物联网的终端本身普遍处于白盒环境中,***者很容易获取相关的信息进行***,这个时候如果不 ...
- 记一次Pinpoint监控工具部署过程
环境:Centos 7.4 X64IP:192.168.1.11 1.配置环境,先安装jdk 到Oracle官网下载安装JDK https://www.oracle.com/technetwork/j ...
- Visual Studio Code mac OS 安装 中文简体语言包
先下载中文简体语言包 官网 https://marketplace.visualstudio.com/search?target=VSCode&category=Language%20Pack ...
- React-Native iOS真机调试(新版)
2019独角兽企业重金招聘Python工程师标准>>> React-Native iOS真机调试 看到网上很多以前的文章 找到两种方法 一 修改AppDelegate 把URL的替换 ...
- elementUI字体图标不显示问题
原文链接: 点我 自己搭建的Vue项目,没有使用vue-cli,引入elementUI时提示字体图标404,找不到文件,如下错误: GET http://localhost:9090/WEB-INF/ ...
- 信息竞赛进阶指南--区间最值问题的ST算法
void ST_prework() { for (int i = 1; i <= n; i++) f[i][0] = a[i]; int t = log(n) / log(2) + 1; for ...