UVA 539 - The Settlers of Catan 解题报告

来源:互联网 发布:java手机模拟器安卓版 编辑:程序博客网 时间:2024/06/05 02:51

搜索即可,图为无向图。找出能走的不重复的边的最大数

#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;}


 

原创粉丝点击