poj 3041 最小点覆盖=最大匹配
2014-04-30 15:01
267 查看
#include<stdio.h>
#include<string.h>
#define N 510
int map
,n,mark
,link
;
int find(int u) {
int i;
for(i=1;i<=n;i++)
if(!mark[i]&&map[u][i]) {
mark[i]=1;
if(link[i]==-1||find(link[i])) {
link[i]=u;
return 1;
}
}
return 0;
}
int main() {
int i,j,k,s;
while(scanf("%d%d",&n,&k)!=EOF) {
memset(map,0,sizeof(map));
for(i=1;i<=k;i++) {
scanf("%d%d",&j,&s);
map[j][s]=1;
}
k=0;
memset(link,-1,sizeof(link));
for(i=1;i<=n;i++) {
memset(mark,0,sizeof(mark));
k+=find(i);
}
printf("%d\n",k);
}
return 0;
}
#include<string.h>
#define N 510
int map
,n,mark
,link
;
int find(int u) {
int i;
for(i=1;i<=n;i++)
if(!mark[i]&&map[u][i]) {
mark[i]=1;
if(link[i]==-1||find(link[i])) {
link[i]=u;
return 1;
}
}
return 0;
}
int main() {
int i,j,k,s;
while(scanf("%d%d",&n,&k)!=EOF) {
memset(map,0,sizeof(map));
for(i=1;i<=k;i++) {
scanf("%d%d",&j,&s);
map[j][s]=1;
}
k=0;
memset(link,-1,sizeof(link));
for(i=1;i<=n;i++) {
memset(mark,0,sizeof(mark));
k+=find(i);
}
printf("%d\n",k);
}
return 0;
}
相关文章推荐
- 7年了
- Centos Nginx+PHP+PHP-FPM安装使用YUM
- linux (ubuntu 14.04) 设置静态IP地址(一个网卡一个或多个IP地址)
- Solr4.2 新特性 DocValues
- Elasticsearch
- Ubuntu 13.10 eclipse后菜单栏下拉菜单无法显示
- beanstalkd消息队列在生产环境的应用
- 简单的Android之apk包反编译方法
- MFC窗口初始化打开时窗口大小的设定
- c++基础知识拾遗
- 在unbuntu 1204(32位)下安装hadoop2.2.0的一些问题
- 游戏分类
- 不要在最能吃苦的年纪选择了安逸
- find 命令
- LRUCache和FastLRUCache实现分析
- 黑马程序员_面向对象_静态&单例
- EDMA3的传输配置步骤,翻译自sprugx8b 5.7Setting Up a Transfer
- <s:radio>标签 默认选中
- jobschu CGIC库的移植及使用
- Unity3d发送邮件