博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2594 - Treasure Exploration
阅读量:7050 次
发布时间:2019-06-28

本文共 1336 字,大约阅读时间需要 4 分钟。

一个星球上有很多点,点与点之间有很多单向路

问可重点的最小路径覆盖

利用floyd缩点后求二分图最大匹配

1 #include 
2 #include
3 #include
4 using namespace std; 5 const int maxn=505; 6 int m,n; 7 int map[maxn][maxn]; 8 int link[maxn],vis[maxn]; 9 void floyd()10 {11 int i,j,k;12 for(k=1;k<=n;k++)13 for(i=1;i<=n;i++)14 for(j=1;j<=n;j++)15 {16 if(map[i][k]&&map[k][j])17 map[i][j]=1;18 }19 }20 bool dfs(int t)21 {22 int i;23 for(i=1;i<=n;++i)24 {25 if(!vis[i]&&map[t][i])26 {27 vis[i]=1;28 if(link[i]==-1||dfs(link[i]))29 {30 link[i]=t;31 return 1;32 }33 }34 }35 return 0;36 }37 int main()38 {39 int ans,i,b,a;40 while(~scanf("%d%d",&n,&m)&&(n+m))41 {42 memset(map,0,sizeof(map));43 for(i=1;i<=m;i++) 44 {45 scanf("%d%d",&a,&b);46 map[a][b]=1;47 }48 floyd();49 memset(link,-1,sizeof(link));50 ans=0;51 for(i=1;i<=n;i++)52 {53 memset(vis,0,sizeof(vis));54 if(dfs(i)) ans++;55 }56 printf("%d\n",n-ans);57 }58 }59

 

转载于:https://www.cnblogs.com/nicetomeetu/p/5512287.html

你可能感兴趣的文章
Makefile中的变量和shell变量
查看>>
<转>ThinkPHP的开发常用系统配置项
查看>>
真正的让iframe自适应高度 兼容多种浏览器随着窗口大小改变
查看>>
大数据多维分析平台的实践
查看>>
Python常用函数
查看>>
二分法习题HDU2199
查看>>
strcpy,sprintf,memcpy的区别
查看>>
web框架
查看>>
线程互斥锁
查看>>
spring colud 博客
查看>>
Redis安装
查看>>
JavaScript 自学过程
查看>>
GDAL源码剖析(三)之Swig编译和帮助文档生成
查看>>
Android学习笔记:NDK入门一些总结
查看>>
Project Euler Problem 3: Largest prime factor
查看>>
颜色区分
查看>>
微信认证结果拆分为资质审核和名称审核
查看>>
Sass和Compass入门
查看>>
重装系统后删除Cygwin文件夹
查看>>
享元模式
查看>>