POJ 3041 Asteroids

来源:互联网 发布:mysql 用户登录失败 编辑:程序博客网 时间:2024/06/06 03:43

POJ 3041 Asteroids

题目链接:POJ 3041


分析:

最大点独立集=最大匹配数


#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;int n,m;// DFSconst int maxn=512;bool used[maxn];vector<int>g[maxn];int L,R;int x[maxn],y[maxn];bool SearchPath(int u){int Size=g[u].size(),v;     for(int i=0;i<Size;i++) {    v=g[u][i];   if(!used[v])   {    used[v] = true;if(y[v] == -1 || SearchPath(y[v])){  y[v]=u;  x[u]=v;  return true;}   } } return false;}int MaxMatch(){ int ret=0; memset(x,-1,sizeof(x)); memset(y,-1,sizeof(y)); for(int i=1;i<=L;i++) {if(x[i]==-1){   memset(used,false,sizeof(used));if(SearchPath(i))   ret++;} } return ret;}int main(){// freopen("in.txt","r",stdin);int u,v;    while(scanf("%d %d",&n,&m)!=EOF){for(int i=1;i<=n;i++)g[i].clear();for(int i=0;i<m;i++){scanf("%d %d",&u,&v);g[u].push_back(v);}L=n;printf("%d\n",MaxMatch());}}


0 0
原创粉丝点击