UVA - 539 The Settlers of Catan

来源:互联网 发布:南昌java培训费用 编辑:程序博客网 时间:2024/06/05 05:03

题目大意:给你N个点,M个相连接的路径,在每条路只能走一次的条件下,求最长的路径是多少

解题思路:用回溯法,简单暴力


#include<cstdio>#include<cstring>int n, m;int node[50][50];int max;void dfs(int cur, int len) {for(int j = 0; j < n; j++){if(node[cur][j]) {node[cur][j]--;node[j][cur]--;dfs(j,len+1);node[cur][j]++;node[j][cur]++;}}if(max < len)max = len;}int main() {int num1, num2;while(scanf("%d%d", &n, &m) && m) {memset(node,0,sizeof(node));for(int i = 0; i < m; i++) {scanf("%d %d",&num1,&num2);node[num1][num2]++;node[num2][num1]++;}max = 0;for(int i = 0; i < n; i++)dfs(i,0);printf("%d\n",max);}return 0;}



0 0