ACM俱乐部 3919 旅游景点 【最大团】

转载请注明出处:http://blog.csdn.net/a1dark

分析:一道最大团模板、第一次做最大团、没有别的想法、只能爆搜、思路很简单、可是代码写的搓、可怜

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=101;
int maxx,n;
int mpt[maxn][maxn];
int vis[maxn];
int ok(int x){
    for(int i=1;i<=n;i++){
        if(vis[i]==1&&i!=x){
            if(mpt[i][x]!=1||mpt[x][i]!=1){
                return 0;
            }
        }
    }
    return 1;
}
void dfs(int x,int dot){
    maxx=max(maxx,dot);
    if(x>n)return;
    if(ok(x+1)&&vis[x+1]==0){
        vis[x+1]=1;
        dfs(x+1,dot+1);
        vis[x+1]=0;
        vis[x+1]=2;
        dfs(x+1,dot);
        vis[x+1]=0;
    }
    else{
        dfs(x+1,dot);
    }
}
int main(){
    while(scanf("%d",&n)!=EOF){
        if(n==0)break;
        memset(mpt,0,sizeof(mpt));
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++)
                scanf("%d",&mpt[i][j]);
        }
        maxx=0;
        dfs(0,0);
        printf("%d\n",maxx);
    }
    return 0;
}


你可能感兴趣的:(图论,最大团)