| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 1123 | Accepted: 732 |
Description
o o--o o
\ / \ /
o--o o--o
/ \ /
o o--o o--o
\ /
o--o
Input
Output
Sample Input
3 2 0 1 1 2 15 16 0 2 1 2 2 3 3 4 3 5 4 6 5 7 6 8 7 8 7 9 8 10 9 11 10 12 11 12 10 13 12 14 0 0
Sample Output
2 12
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int map[30][30];
bool vis[30][30];
int n, m;
int MAX;
void dfs(int dd, int num )
{
for(int i=0; i<n; i++)
{
if(map[dd][i]==1 && vis[dd][i]==0 )
{
vis[dd][i]=1; vis[i][dd]=1;
dfs(i, num+1);
vis[dd][i]=0; vis[i][dd]=0;
}
}
if(num>MAX) MAX=num;
}
int main()
{
int i, j;
int u, v;
while(scanf("%d %d", &n, &m)!=EOF)
{
if(n==0 && m==0 )break;
memset(map, 0, sizeof(map ));
for(i=0; i<m; i++)
{
scanf("%d %d", &u, &v);
map[u][v]=1; map[v][u]=1;
}
MAX=-1;
int cnt;
for(i=0; i<n; i++)
{
cnt=0;
memset(vis, false, sizeof(vis));
dfs(i, 0);
//if(cnt>MAX) MAX=cnt;
}
printf("%d\n", MAX );
}
return 0;
}
poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
原文:http://www.cnblogs.com/yspworld/p/4338781.html