题目大意:
n个学生,他们中有的有关系,有的没有关系,求最多可以取出几个人,使得他们之间没有关系。
思路:
复制别人的。。。。。
#include#include const int MAXN=500+10; int res[MAXN],head[MAXN],len; bool vis[MAXN]; struct edge { int to,next; }e[MAXN*MAXN]; void add(int from,int to) { e[len].to=to; e[len].next=head[from]; head[from]=len++; } bool find(int a) { for(int i=head[a];i!=-1;i=e[i].next) { int id=e[i].to; if(!vis[id]) { vis[id]=true; if(res[id]==0 || find(res[id]) ) { res[id]=a; return true; } } } return false; } int main() { int n; while(~scanf(%d,&n)) { memset(res,0,sizeof(res)); memset(head,-1,sizeof(head)); len=0; for(int i=0;i