Treasure Exploration(二分最大匹配+floyd)
Time Limit: 6000MS | Memory Limit: 65536K | |
Total Submissions: 7455 | Accepted: 3053 |
Description
Input
Output
Sample Input
1 0
2 1
1 2
2 0
0 0
Sample Output
1
1
题解:需要加上floyd,用上vector 竟然re了;
ac代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
const int MAXN=;
int mp[MAXN][MAXN],vis[MAXN],usd[MAXN];
int N;
bool dfs(int u){
for(int i=;i<=N;i++){
if(!vis[i]&&mp[u][i]){
vis[i]=;
if(!usd[i]||dfs(usd[i])){
usd[i]=u;return true;
}
}
}
return false;
}
void floyd(){
for(int i=;i<=N;i++)
for(int j=;j<=N;j++)
if(mp[i][j]==){
for(int k=;k<=N;k++)
if(mp[i][k]&&mp[k][j])
mp[i][j]=;
}
}
int main(){
int M;
while(scanf("%d%d",&N,&M),N|M){
int a,b;
mem(mp,);mem(usd,);
while(M--){
scanf("%d%d",&a,&b);
mp[a][b]=;
}
int ans=;
floyd();
for(int i=;i<=N;i++){
mem(vis,);
if(dfs(i))ans++;
}
printf("%d\n",N-ans);
}
return ;
}
re代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
const int MAXN=;
int vis[MAXN],usd[MAXN];
vector<int>vec[MAXN];
int N;
bool dfs(int u){
for(int i=;i<vec[u].size();i++){
int v=vec[u][i];
if(!vis[v]){
vis[v]=;
if(!usd[v]||dfs(usd[v])){
usd[v]=u;return true;
}
}
}
return false;
}
void floyd(){
for(int i=;i<=N;i++){
for(int k=;k<vec[i].size();k++)
for(int j=;j<vec[vec[i][k]].size();j++){
vec[i].push_back(vec[vec[i][k]][j]);
}
}
}
int main(){
int M;
while(scanf("%d%d",&N,&M),N|M){
int a,b;
mem(usd,);
for(int i=;i<=N;i++)vec[i].clear();
while(M--){
scanf("%d%d",&a,&b);
vec[a].push_back(b);
}
floyd();
int ans=;
for(int i=;i<=N;i++){
mem(vis,);
if(dfs(i))ans++;
}
printf("%d\n",N-ans);
}
return ;
}
Treasure Exploration(二分最大匹配+floyd)的更多相关文章
- poj 2594 Treasure Exploration (二分匹配)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 6558 Accepted: 2 ...
- POJ-2594 Treasure Exploration,floyd+最小路径覆盖!
Treasure Exploration 复见此题,时隔久远,已忘,悲矣! 题意:用最少的机器人沿单向边走完( ...
- POJ 2594 —— Treasure Exploration——————【最小路径覆盖、可重点、floyd传递闭包】
Treasure Exploration Time Limit:6000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64 ...
- POJ2594:Treasure Exploration(Floyd + 最小路径覆盖)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 9794 Accepted: 3 ...
- POJ-2594 Treasure Exploration floyd传递闭包+最小路径覆盖,nice!
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 8130 Accepted: 3 ...
- POJ2594 Treasure Exploration(最小路径覆盖)
Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 8550 Accepted: 3 ...
- Poj 2594 Treasure Exploration (最小边覆盖+传递闭包)
题目链接: Poj 2594 Treasure Exploration 题目描述: 在外星上有n个点需要机器人去探险,有m条单向路径.问至少需要几个机器人才能遍历完所有的点,一个点可以被多个机器人经过 ...
- Treasure Exploration POJ - 2594 【有向图路径可相交的最小路径覆盖】模板题
Have you ever read any book about treasure exploration? Have you ever see any film about treasure ex ...
- POJ2594 Treasure Exploration【DAG有向图可相交的最小路径覆盖】
题目链接:http://poj.org/problem?id=2594 Treasure Exploration Time Limit: 6000MS Memory Limit: 65536K T ...
随机推荐
- js柯里化的一个应用
听到同学说面试一道题目 add(1)(2)(3)(4); 查询了下资料 这是一个js里面的柯里化 现象 add_curry防范返回的是一个 retVal,并不是执行结果.这里的代码很想递归,但是不是 ...
- slf4j+log4j配置(Maven)
首先配置Maven依赖 <!-- http://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --> <dependency& ...
- Determine If Two Rectangles Overlap
判断相交的情况比较复杂,所以从判断不相交的角度考虑. ! (P1.y < P4.y || P1.x > P4.x || P2.y > P3.y || P2.x < P3.x)
- BZOJ 2337: [HNOI2011]XOR和路径( 高斯消元 )
一位一位考虑异或结果, f(x)表示x->n异或值为1的概率, 列出式子然后高斯消元就行了 --------------------------------------------------- ...
- js正则语法
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数 ...
- maven copy 依赖jar包
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-depen ...
- 如何实现HTTPSERVER
Write your own http server author : Kevin Lynx Why write your own? 看这个问题的人证明你知道什么是http server,世界上有很多 ...
- isinstance 和 issubclass
一.isinstance Python 中的isinstance函数 isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数o ...
- JS 修改元素
var ele; window.onload=function(){ ele=document.createElement('div'); ele.id='myEle1'; ele.style.bor ...
- Laravel后台 + AngularJS前端 的网站构建与维护
最近维护的报修网站,采用Laravel+AngularJS框架搭建,还有很多东西需要熟悉掌握,现将修复的Bug或添加的功能中值得记录的地方总结如下. 其中,需要注意的问题基本是原因不明且不是太严重的问 ...