Asteroids(匈牙利算法)
2024-08-31 04:56:43
求最小点覆盖数,即最大匹配数,匈牙利算法。
#include<stdio.h>
#include<string.h>
int map[][],vis[],linker[];//linker[]记录V2中的点i在V1中所匹配的点x的编号
int n,k;
int dfs(int x)
{
for (int i = ; i <= n; i++)
{
if (map[x][i] && !vis[i])//x到i有边且i点未被标记
{
vis[i] = ;
if (!linker[i]||dfs(linker[i]))//i没有匹配或被i匹配到的点可以找到增广路
{
linker[i] = x;//更新匹配
return ;//匹配成功
}
}
}
return ;//匹配失败
}
int main()
{
scanf("%d%d",&n,&k);
memset(map,,sizeof(map));
memset(linker,,sizeof(linker));
for (int i = ; i <= k; i++)
{
int u,v;
scanf("%d%d",&u,&v);
map[u][v] = ;
}
int cnt = ;
for (int i = ; i <= n; i ++)
{
memset(vis,,sizeof(vis));//清除标记
if (dfs(i))
cnt++;
}
printf("%d\n",cnt);
return ;
}
最新文章
- Binder In Native
- Proxy setting
- addChildViewController相关api深入剖析
- let和expr比较
- Mysql 修改列的顺序
- poj 3026 Borg Maze 最小生成树 + 广搜
- Codeforces Round #343 (Div. 2) E. Famil Door and Roads
- 关于HashMap根据Value获取Key
- Unity monodev环境搭建
- linux内核源码阅读之facebook硬盘加速flashcache之六
- python encode和decode函数说明【转载】
- Linux进程间通信总结
- append()常见错误
- 版本控制器——Egit使用方法
- java基础---->;hashMap的简单分析(一)
- golang string和[]byte的对比
- 不让浏览器缓存index.html
- Scrapy Spider MiddleWare 设置
- alfred3配置
- 20155301 2016-2017-2 《Java程序设计》第7周学习总结