标签:des style http color java os io strong
4 0:(1) 1 1:(2) 2 3 2:(0) 3:(0) 5 3:(3) 1 4 2 1:(1) 0 2:(0) 0:(0) 4:(0)
1 2
最小顶点覆盖,一直超时,后来才意识到图是一个稀疏图,用矩阵存图果断超时。用邻接表轻松AC!
#include"stdio.h"
#include"string.h"
#include"queue"
#include"vector"
using namespace std;
#define N 1505
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
const int inf=0x7fffffff;
int mark[N],n,t;
int link[N],head[N];
struct node
{
int u,v,next;
}g[N*10];
void add(int u,int v)
{
g[t].u=u;
g[t].v=v;
g[t].next=head[u];
head[u]=t++;
}
int find(int u)
{
int i,v;
for(i=head[u];i!=-1;i=g[i].next)
{
v=g[i].v;
if(!mark[v])
{
mark[v]=1;
if(link[v]==-1||find(link[v]))
{
link[v]=u;
return 1;
}
}
}
return 0;
}
int main()
{
int i,u,q,v;
while(scanf("%d",&n)!=-1)
{
memset(head,-1,sizeof(head));
memset(link,-1,sizeof(link));
t=0;
for(i=0;i<n;i++)
{
scanf("%d:(%d)",&u,&q);
while(q--)
{
scanf("%d",&v);
add(u,v);
add(v,u); //建立的双向边,所以答案最后除以二
}
}
int ans=0;
for(i=0;i<n;i++)
{
memset(mark,0,sizeof(mark));
ans+=find(i);
}
printf("%d\n",ans/2);
}
return 0;
}
hdu 1054 Strategic Game (最小顶点覆盖+稀疏图),布布扣,bubuko.com
hdu 1054 Strategic Game (最小顶点覆盖+稀疏图)
标签:des style http color java os io strong
原文地址:http://blog.csdn.net/u011721440/article/details/38404559