题目链接:https://cn.vjudge.net/contest/275153#problem/G

具体思路: 我们可以按照暴力的方法进行做 , 我们可以枚举每一条边,将这条边的权值设置为inf,然后再去跑最短路,起点是这条边的起点,如果说这条边的另一个点能够到达,并且总的路径花费小于inf,这就证明了有回路,然后再去从这些回路里面去找最小花费就可以了

AC代码:

#include<bits/stdc++.h>
using namespace std;
# define ll long long
const int maxn = 10000+100;
# define inf 0x3f3f3f3f
const int mod = 1e9;
map<pair<int,int>,int>vis;
int head[maxn],num,dis[maxn];
int ans;
struct node
{
int fr;
int to;
int cost;
int nex;
} edge[maxn];
struct point
{
int v;
int cost;
point() {}
point(int xx,int yy)
{
v=xx;
cost=yy;
}
friend bool operator < (point a,point b)
{
return a.cost>b.cost;
}
};
void init()
{
vis.clear();
num=0;
memset(head,-1,sizeof(head));
ans=inf;
}
void addedge(int fr,int to,int cost)
{
edge[num].to=to;
edge[num].fr=fr;
edge[num].nex=head[fr];
edge[num].cost=cost;
head[fr]=num++;
}
void krustra(int fr,int cost)
{
memset(dis,inf,sizeof(dis));
priority_queue<point>q;
dis[fr]=0;
q.push(point(fr,0));
while(!q.empty())
{
point tmp=q.top();
q.pop();
if(tmp.cost>ans)continue;
if(dis[tmp.v]+cost>ans)break;
for(int i=head[tmp.v]; i!=-1; i=edge[i].nex)
{
int u=edge[i].to;
if(dis[u]>dis[tmp.v]+edge[i].cost)
{
dis[u]=dis[tmp.v]+edge[i].cost;
q.push(point(u,dis[u]));
}
}
}
}
int main()
{
int T;
scanf("%d",&T);
int Case=0;
while(T--)
{
int n;
init();
scanf("%d",&n);
int x1,y1,x2,y2,d;
int dfn=0;
for(int i=1; i<=n; i++)
{
scanf("%d %d %d %d %d",&x1,&y1,&x2,&y2,&d);
if(vis[make_pair(x1,y1)]==0)
{
vis[make_pair(x1,y1)]=++dfn;
}
if(vis[make_pair(x2,y2)]==0)
{
vis[make_pair(x2,y2)]=++dfn;
}
addedge(vis[make_pair(x2,y2)],vis[make_pair(x1,y1)],d);
addedge(vis[make_pair(x1,y1)],vis[make_pair(x2,y2)],d);
}
for(int i=0; i<num; i+=2)
{
int tmp=edge[i].cost;
edge[i].cost=inf;
edge[i+1].cost=inf;//注意这是双向边,所以需要将相邻的两条边的权值都设置为inf
krustra(edge[i].fr,tmp);
ans=min(ans,dis[edge[i].to]+tmp);
edge[i].cost=tmp;
edge[i+1].cost=tmp;
}
printf("Case #%d: ",++Case);
if(ans==inf)printf("%d\n",0);
else printf("%d\n",ans);
}
return 0;
}

G - Pandaland HDU - 6005 (找最小环)的更多相关文章

  1. G - Queue HDU - 5493 线段树+二分

    G - Queue HDU - 5493 题目大意:给你n个人的身高和这个人前面或者后面有多少个比他高的人,让你还原这个序列,按字典序输出. 题解: 首先按高度排序. 设每个人在其前面有k个人,设比这 ...

  2. 拓扑_dfs——找最小环

    今天在题库发现了一个wa了很久还没调过的题,这个题呢是2015年noip的day1t2,莫名感觉难度上升(其实水的一匹). 这道题输出是3,其实就是一个图中让你找最小环,尽管我不会找环,但是要是我的话 ...

  3. G - Game HDU - 5242 (数链剖分)

    题目链接: G - Game HDU - 5242 题目大意:首先是T组测试样例,给出一颗以1节点为根的树,每个节点有各自的价值,有m次从根节点出发向下走到叶子节点的机会,每次会得到所有经过节点的权值 ...

  4. HDU 6005 Pandaland (Dijkstra)

    题意:给定一个图,找出一个最小环. 析:暴力枚举每一条,然后把边设置为最大值,以后就不用改回来了,然后跑一遍最短路,跑 n 次就好. 代码如下: #pragma comment(linker, &qu ...

  5. 【HDU 6005】Pandaland(Dijkstra)

    Problem Description Mr. Panda lives in Pandaland. There are many cities in Pandaland. Each city can ...

  6. HDU 1028 整数拆分 HDU 2082 找单词 母函数

    生成函数(母函数) 母函数又称生成函数.定义是给出序列:a0,a1,a2,...ak,...an, 那么函数G(x)=a0+a1*x+a2*x2+....+ak*xk +...+an* xn  称为序 ...

  7. hdu 5051 找规律?+大trick

    http://acm.hdu.edu.cn/showproblem.php?pid=5051 打表找规律 据说是http://zh.wikipedia.org/wiki/%E6%9C%AC%E7%A6 ...

  8. HDU 2082 找单词 (普通母函数)

    题目链接 Problem Description 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26.那么,对于 ...

  9. hdu 5247 找连续数(思维)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5247 找连续数 Time Limit: 2000/1000 MS (Java/Others)    M ...

随机推荐

  1. 如何处理UIVIew addsubview 不显示subview

    老代码: addsubview不显示uilabel -(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSIn ...

  2. HDU3452_Bonsai

    题目的意思是给你一个棵树,每天边上有一个权值,现在要想根节点和每个叶子节点完全隔离开来,删除一些边,求最少需要删除的边权值综合是多少? 直接建模,以根节点为汇点,每个叶子节点连接虚拟源点流量无穷,树上 ...

  3. Python之路3【第零篇】目录

    Web应用框架篇 1.Web应用框架前戏

  4. 【原创】 PLSQL 索引排序优化

    转载请注明出处 select /*+INDEX_DESC(T IDX_SYS_MESS_CREATE_DATE)*/ * FROM sys_message T where t.create_date ...

  5. ZJOI2018外省选手酱油记Day1

    Day0 上午考试...又爆零了 下午讲完题后放假 然后就滚回去收拾行李准备去\(ZJ\) Day1 衢州?我怎么从来没听过这个地方..肯定是我见识少 下午 上高铁出发,\(3个小时\),看了一下电影 ...

  6. 阿里大鱼短信发送,放到项目中报错Java.lang.NoClassDefFoundError:com/aliyuncs/exceptions/ClientException,已解决

    由于项目中使用的短信服务发送的消息太慢,所以把采用了阿里大鱼的短信服务,花费了几个小时,通过审核,发现可以单独运行.但是,放到web项目中会报错(Java.lang.NoClassDefFoundEr ...

  7. Luogu 2801 教主的魔法 | 分块模板题

    Luogu 2801 教主的魔法 | 分块模板题 我犯的错误: 有一处l打成了1,还看不出来-- 缩小块大小De完bug后忘了把块大小改回去就提交--还以为自己一定能A了-- #include < ...

  8. 洛谷 P3235 [HNOI2014]江南乐 解题报告

    P3235 [HNOI2014]江南乐 Description 两人进行 T 轮游戏,给定参数 F ,每轮给出 N 堆石子,先手和后手轮流选择石子数大于等于 F 的一堆,将其分成任意(大于1)堆,使得 ...

  9. [python]python安装包错误

    “UnicodeDecodeError: ‘ascii’ codec can’t decode : ordinal not )” 在windows XP上 解决方法: Solution: ====== ...

  10. SVN报错:Node remains in conflict显示冲突的解决办法

    如果是提示文件冲突: svn revert --depth=infinity 有冲突的文件名 如果提示目录有冲突: svn revert --depth=infinity 目录名 搞定.