uva 12544 无向图最小环
思路:这题的N有500,直接floyd肯定超时。
我的做法是每次枚举一个点,求出包含这个点的最小环。
对所有最小环取最小值。求包含某个点的最小环我用的是启发式搜索,先以该点求一次spfa,然后dfs解决问题。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define Maxn 600
#define inf 1000000
using namespace std;
int head[Maxn],vi[Maxn],dis[Maxn],e,que[Maxn*],ans,dist[Maxn];
struct Edge{
int u,v,next;
}edge[Maxn*];
void init()
{
memset(head,-,sizeof(head));
memset(vi,,sizeof(vi));
e=;
}
void add(int u,int v)
{
edge[e].u=u,edge[e].v=v,edge[e].next=head[u],head[u]=e++;
edge[e].u=v,edge[e].v=u,edge[e].next=head[v],head[v]=e++;
} void spfa(int u)
{
int i,j,v,now,rear,he;
for(i=;i<Maxn;i++){
dist[i]=inf;
vi[i]=;
}
dist[u]=;
he=rear=;
que[he++]=u;
while(he!=rear){
now=que[rear++];
vi[now]=;
for(i=head[now];i!=-;i=edge[i].next){
v=edge[i].v;
if(v==now) continue;
if(dist[now]+<dist[v]){
dist[v]=dist[now]+;
if(!vi[v]){
que[he++]=v;
vi[v]=;
}
}
}
}
return ;
}
void dfs(int u,int pre)
{
int i,v;
for(i=head[u];i!=-;i=edge[i].next){
v=edge[i].v;
if(v==pre) continue;
if(dis[v]==){
ans=min(ans,dis[u]+);
continue;
}
if(dis[u]+dist[u]>=ans)
return ;
if(dis[u]+<dis[v]){
dis[v]=dis[u]+;
dfs(v,u);
}
}
}
int main()
{
int n,m,i,j,u,v,t,Ca=;
scanf("%d",&t);
while(t--){
init();
scanf("%d%d",&n,&m);
for(i=;i<=m;i++){
scanf("%d%d",&u,&v);
u++,v++;
add(u,v);
}
ans=inf;
for(i=;i<=n;i++){
for(j=;j<=n;j++)
dis[j]=inf;
dis[i]=;
spfa(i);
dfs(i,);
}
printf("Case %d: ",++Ca);
if(ans>=inf)
printf("impossible\n");
else
printf("%d\n",ans);
}
return ;
}
uva 12544 无向图最小环的更多相关文章
- POJ 1734 无向图最小环/有向图最小环
给定一张图,求图中一个至少包含三个点的环,环上的点不重复,并且环上的边的长度之和最小. 点数不超过100个 输出方案 无向图: /*Huyyt*/ #include<bits/stdc++.h& ...
- UVA 12544 - Beehives O(nm) 无向图最小环
Bees are one of the most industrious insects. Since they collect nectarand pollen from flowers, they ...
- FZU 2090 旅行社的烦恼 floyd 求无向图最小环
题目链接:旅行社的烦恼 题意是求无向图的最小环,如果有的话,输出个数,并且输出权值. 刚刚补了一发floyd 动态规划原理,用了滑动数组的思想.所以,这个题就是floyd思想的变形.在k从1到n的过程 ...
- 【POJ1734】Sightseeing Trip 无向图最小环
题目大意:给定一个 N 个顶点的无向图,边有边权,如果存在,求出该无向图的最小环,即:边权和最小的环,并输出路径. 题解:由于无向图,且节点数较少,考虑 Floyd 算法,在最外层刚开始遍历到第 K ...
- 图论:Floyd-多源最短路、无向图最小环
在最短路问题中,如果我们面对的是稠密图(十分稠密的那种,比如说全连接图),计算多源最短路的时候,Floyd算法才能充分发挥它的优势,彻彻底底打败SPFA和Dijkstra 在别的最短路问题中都不推荐使 ...
- 「LOJ#10072」「一本通 3.2 例 1」Sightseeing Trip(无向图最小环问题)(Floyd
题目描述 原题来自:CEOI 1999 给定一张无向图,求图中一个至少包含 333 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方 ...
- POJ 1734 Sightseeing trip(无向图最小环+输出路径)
题目链接 #include <cstdio> #include <string> #include <cstring> #include <queue> ...
- USACO4.13Fence Loops(无向图最小环)
最近脑子有点乱 老是不想清楚就啪啪的敲 敲完之后一看 咦..样例都过不去 仔细一想 这样不对啊 刚开始就写了一SPFA 最后发现边跟点的关系没处理好 删了..写dfs..还是没转化好 开始搜解题方法 ...
- find the mincost route【无向图最小环】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1599 Problem Description 杭州有N个景区,景区之间有一些双向的路来连接,现在860 ...
随机推荐
- C# 特性详解(上)
特性(attribute)是被指定给某一声明的一则附加的声明性信息. 元数据,就是C#中封装的一些类,无法修改.类成员的特性被称为元数据中的注释. 1.什么是特性 1)属性与特性的区别 属性 ...
- Ext.form.ComboBox 后台取值 动态加载 ext5.0.0
我用的extjs是5.0.0版本的. 请注意:如果这里没有的combobox相关内容,这里一定有. 开始的时候keyup事件取到的数据就是放不到ComboBox中,放全局变量也不好用.最后大神出手帮忙 ...
- div 中如何加各种边框(转)
边框风格属性(border-style) 这个属性用来设定上下左右边框的风格,它的值如下: none (没有边框,无论边框宽度设为多大) dotted (点线式边框) dashed (破折线式边框) ...
- 【M30】代理类
1.考虑二维数组,在栈上分配,必须在编译时确定大小,也就是大小是常量.另外一点,C++不支持在堆上分配二维数组.怎么解决这个问题? 二维数组可以看成,一维数组的数组.因此,可以使用代理类,Array2 ...
- Python 存储模型
1.Python彻底分离了对象和引用,可以认为内存中的对象都是不可修改的,每次修改引用,相当于在堆上重新创建一个对象,引用指向新对象. 2.对于数值和字符串,修改意味着引用指向一个新对象. 3.集合中 ...
- java生成汉字验证码
java实现的汉字输入验证码,主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确,实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用文本框 ...
- NPOI 教程 - 3.2 打印相关设置
转:http://www.cnblogs.com/wolfplan/archive/2013/01/13/2858991.html NPOI 教程 - 3.2 打印相关设置 打印设置主要包括方向设 ...
- 推荐几个可以与PhoneGap很好搭配的UI框架
- xui.js:可以被视作是jquery在phonegap上的替代品,挺好用的- jq.mobi:同上,不过体积比xui.js要大,一般还是用xui.js- jq.ui:jq.mobi配套的UI框架 ...
- oc-25-id类型
/** id:万能指针 能够指向任何OC对象. id = NSObject *, id cat = [Cat new]; [cat jump]; NSObject:是所有类的父类,基类.可以指向任何O ...
- vm.dirty_background_ratio and vm.dirty_ratio
http://hellojava.info/?p=264&utm_source=tuicool&utm_medium=referral 解决磁盘io紧张的一种临时方法 有些时候可能会碰 ...