UVA 539 The Settlers of Catan

 

CODE:

 

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
using  namespace std;

#define MAXN  30
#define INF 0X3F3F3F3F
int G[MAXN][MAXN];
bool vis[MAXN][MAXN];
int ans, n, m;

void init()
{
    memset(G,  0sizeof(G));
    ans = -INF;
}


void dfs( int u,  int cur)
{
     if(cur > ans) ans = cur;
     for( int v =  0; v < n; v++)
    {
         if(G[u][v] && !vis[u][v] && !vis[v][u])
        {
            vis[u][v] = vis[v][u] =  1;
            dfs(v, cur+ 1);
            vis[u][v] = vis[v][u] =  0;
        }
    }
}

int main()
{
     while(scanf( " %d%d ", &n, &m) && ( n || m))
    {
        init();
         while(m--)
        {
             int u, v;
            scanf( " %d%d ", &u, &v);
            G[u][v] = G[v][u] =  1;
        }
         for( int v =  0; v < n; v++)
        {
            memset(vis,  0sizeof(vis));
            dfs(v,  0);
        }
        printf( " %d\n ", ans);
    }
     return  0;
}

 

你可能感兴趣的:(set)