标签: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