Tour(KM算法)
Tour
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 2462 Accepted Submission(s): 1222
6 9
1 2 5
2 3 5
3 1 10
3 4 12
4 1 8
4 6 11
5 4 7
5 6 9
6 5 4
题意:让找一个环,费用最小,这个环要包括所有的点,km算法;不过要建负边;负的最大匹配等于最小匹配,而且要考虑重边的情况;大神们好多用费用流写的。。。膜拜;
代码:
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- #include<vector>
- using namespace std;
- const int INF=0x3f3f3f3f;
- const double PI=acos(-1.0);
- #define mem(x,y) memset(x,y,sizeof(x))
- typedef long long LL;
- #define SI(x) scanf("%d",&x)
- #define SL(x) scanf("%lld",&x)
- #define T_T while(T--)
- #define F(i,x) for(i=1;i<=x;i++)
- #define PR(x) printf("%d",x)
- #define PL(x) printf("%lld",x)
- #define p_ printf(" ")
- const int MAXN=210;
- const int MAXM=30010;
- int mp[MAXN][MAXN];
- int lx[MAXN],ly[MAXN],usdx[MAXN],usdy[MAXN],link[MAXN];
- int N;
- bool dfs(int x){
- int i,j;
- usdx[x]=1;
- F(i,N){
- if(!usdy[i]&&lx[x]+ly[i]==mp[x][i]){
- usdy[i]=1;
- if(link[i]==-1||dfs(link[i])){
- link[i]=x;return true;
- }
- }
- }
- return false;
- }
- int km(){
- mem(ly,0);mem(link,-1);
- int i,j,k;
- F(i,N){
- lx[i]=-INF;
- F(j,N){
- lx[i]=max(lx[i],mp[i][j]);
- }
- }
- F(i,N){
- mem(usdx,0);mem(usdy,0);
- while(!dfs(i)){
- int d=INF;
- F(j,N){
- if(usdx[j]){
- F(k,N)
- if(!usdy[k])
- d=min(d,lx[j]+ly[k]-mp[j][k]);
- }
- }
- F(j,N){
- if(usdx[j])lx[j]-=d;
- if(usdy[j])ly[j]+=d;
- }
- mem(usdx,0);mem(usdy,0);
- }
- }
- int ans=0;
- F(i,N)ans+=lx[i]+ly[i];
- return -ans;
- }
- void initial(){
- int i,j;
- F(i,N)F(j,N)mp[i][j]=-INF;
- }
- int main(){
- int T,M;
- SI(T);
- T_T{
- int a,b,c;
- SI(N);SI(M);
- initial();
- while(M--){
- SI(a);SI(b);SI(c);
- if(-c>mp[a][b])mp[a][b]=-c;
- }
- printf("%d\n",km());
- }
- return 0;
- }
Tour(KM算法)的更多相关文章
- 图论(二分图,KM算法):HDU 3488 Tour
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- HDU3488 Tour —— 二分图最大权匹配 KM算法
题目链接:https://vjudge.net/problem/HDU-3488 Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit ...
- hdoj 3488 Tour 【最小费用最大流】【KM算法】
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submi ...
- HDU 3488 Tour (最大权完美匹配)【KM算法】
<题目链接> 题目大意:给出n个点m条单向边边以及经过每条边的费用,让你求出走过一个哈密顿环(除起点外,每个点只能走一次)的最小费用.题目保证至少存在一个环满足条件. 解题分析: 因为要求 ...
- hdu 3488(KM算法||最小费用最大流)
Tour Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submis ...
- 匈牙利算法与KM算法
匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...
- 【HDU2255】奔小康赚大钱-KM算法
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...
- HDU2255-奔小康赚大钱-二分图最大权值匹配-KM算法
二分图最大权值匹配问题.用KM算法. 最小权值的时候把权值设置成相反数 /*-------------------------------------------------------------- ...
- KM算法及其优化的学习笔记&&bzoj2539: [Ctsc2000]丘比特的烦恼
感谢 http://www.cnblogs.com/vongang/archive/2012/04/28/2475731.html 这篇blog里提供了3个链接……基本上很明白地把KM算法是啥讲清楚 ...
随机推荐
- javascript操作JSON字符
1.先要区分JSON字符串和JSON对象 JSON字符串: Var strJSON = “{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}”, 或者 Var ...
- Jquery filter()方法简介
利用filter函数可以从wrapper set中过滤符合条件的dom元素. 如下图html代码,假如我们要获取类名为filter的<a>标签,用filter方法可以很轻松的获得. < ...
- MFC 简单实现 DES 算法
前言 徐旭东老师说过学者就应该对知识抱有敬畏之心,所以我的博客的标题总喜欢加上"简单"二字,就是为了提醒自己,自己所学知识只是皮毛,离真理还远矣. DES 算法 DES算法是密码体 ...
- 一种CentOS图形界面的修复方法
刚跳槽来这个公司,第一个任务是一块PCIE8120卡的应用开发.尼玛,别人来培训过.演示过的,现在居然没一个人能把别人演示的东西演示给我看!只好自己折腾去了.把服务器搬到自己旁边空位方便折腾,结果发现 ...
- android 子线程更新UI
参考http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/package com.exam ...
- 激活Windows 10 正式版
原文 http://jingyan.baidu.com/article/27fa732684b5f646f8271ff4.html Windows 10只提供为期一年的免费升级.因此,不要无限拖延期自 ...
- C/C++ 基础教程
自从做IOS后,就比较少用纯C++的方式写代码了,因为Obj-C的代码风格和C++的风格还是有一点区别的.怕自己忘记了C/C++的基础.整理了一些C/C++基础的网站,供大家学习C/C++ ...
- 一个异或加密方案--C语言实现
核心代码: char encrypt( char f , char c) { return f^c; } int OutEncrypt( char *FilePath, char *SecretWor ...
- HDU1181【有向图的传递闭包】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1181 题意很简单. 有用并查集做的.我这里用传递闭包做. 有向图的传递闭包采用Floyd思想,可以判断 ...
- 编译和安装shibboleth-sp遇到的问题
In file included from mod_shib_20.cpp:68: mod_shib.cpp:118: warning: deprecated conversion from stri ...