本文主要是介绍UVA 539 - The Settlers of Catan 解题报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
搜索即可,图为无向图。找出能走的不重复的边的最大数
#include <iostream>
#include<cstring>
#include<algorithm>
#include<fstream>
#define maxn 30using namespace std;int map[maxn][maxn];
int vis[maxn][maxn];
int point_num;
int edge_num;
int max_num;void dfs(int n,int num)
{if(num>max_num) max_num=num;for(int i=0;i<point_num;i++){if(i!=n&&!vis[n][i]&&map[n][i]){vis[n][i]=1;vis[i][n]=1;dfs(i,num+1);vis[n][i]=0;vis[i][n]=0;}}
}
int main()
{while(cin>>point_num>>edge_num){if(0==point_num&&0==edge_num) break;memset(map,0,sizeof(map));memset(vis,0,sizeof(vis));max_num=0;for(int i=0;i<edge_num;i++){int a,b;cin>>a>>b;map[a][b]=1;map[b][a]=1;}for(int i=0;i<point_num;i++){dfs(i,0);}cout<<max_num<<endl;}return 0;}
这篇关于UVA 539 - The Settlers of Catan 解题报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!