HDOJ1151有向图最小路径覆盖
2024-10-22 05:15:08
//有向图最小路径覆盖:从某一点出发沿着有向路径,不走回路,能将所有的结点遍历。
#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
using namespace std;
const int MAX_N=;
int match[MAX_N];
bool vis[MAX_N];
set<int> insert;
vector<int> e[MAX_N];
int n,k;
void Init()
{
scanf("%d %d",&n,&k);
memset(match, -, sizeof(match));
insert.clear();
for(int i=; i<MAX_N; i++)
{
e[i].clear();
}
int a, b;
for(int i=; i<k; i++)
{
scanf("%d %d", &a, &b);
insert.insert(a);
e[a].push_back(b);
}
} bool Dfs(int x)
{
for(int i=; i<e[x].size(); i++)
{
int u=e[x][i];
if(!vis[u])
{
vis[u]=;
if(match[u]==-||Dfs(match[u]))
{
match[u]=x;
return true;
}
}
}
return false;
} int Bi_matching()
{
int ans=;
set<int>::iterator it;
for(it=insert.begin(); it!=insert.end(); it++)
{
int i=(*it);
memset(vis, false, sizeof(vis));
if(Dfs(i))
ans++;
}
return ans;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
Init();
printf("%d\n",n-Bi_matching());//最小路径覆盖=结点数-最小点集覆盖
}
return ;
}
最新文章
- 逆向工程学习第三天--另外一个ShellCode
- rt—移植笔记1
- 各大IT公司校园招聘程序猿笔试、面试题集锦
- java 深度探险 java 泛型
- linux ps命令介绍
- jquery点击改变图片src源码并toggle
- 【转】iOS可执行文件瘦身方法
- Shell中变量的使用
- Activity的setContentView的流程
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二)
- 函数式编程 - 函数缓存Memoization
- [Python数据挖掘]第3章、数据探索
- 2018.12.21 浪在ACM 集训队第十次测试赛
- Windbg程序调试系列1-常用命令说明&;示例
- week0713.5 newspaper 安装问题
- Linux下安装Anaconda
- linux之bash shell
- bootstrap modal模态框的运用
- 泰坦尼克(Titanic)生存因素可视化
- 小程序中 function (res)的理解