poj The Settlers of Catan( 求图中的最长路 小数据量 暴力dfs搜索(递归回溯))
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 1123 | Accepted: 732 |
Description
You are employed by a software company that just has decided to
develop a computer version of this game, and you are chosen to implement
one of the game's special rules:
When the game ends, the player who built the longest road gains two extra victory points.
The problem here is that the players usually build complex road
networks and not just one linear path. Therefore, determining the
longest road is not trivial (although human players usually see it
immediately).
Compared to the original game, we will solve a simplified problem
here: You are given a set of nodes (cities) and a set of edges (road
segments) of length 1 connecting the nodes.
The longest road is defined as the longest path within the network
that doesn't use an edge twice. Nodes may be visited more than once,
though.
Example: The following network contains a road of length 12.
- o o--o o
\ / \ /
o--o o--o
/ \ / \
o o--o o--o
\ /
o--o
Input
The first line of each test case contains two integers: the number
of nodes n (2<=n<=25) and the number of edges m (1<=m<=25).
The next m lines describe the m edges. Each edge is given by the numbers
of the two nodes connected by it. Nodes are numbered from 0 to n-1.
Edges are undirected. Nodes have degrees of three or less. The network
is not neccessarily connected.
Input will be terminated by two values of 0 for n and m.
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搜索(递归回溯))的更多相关文章
- Floyd-Warshall求图中任意两点的最短路径
原创 除了DFS和BFS求图中最短路径的方法,算法Floyd-Warshall也可以求图中任意两点的最短路径. 从图中任取两点A.B,A到B的最短路径无非只有两种情况: 1:A直接到B这条路径即是最短 ...
- HDU 3249 Test for job (有向无环图上的最长路,DP)
解题思路: 求有向无环图上的最长路.简单的动态规划 #include <iostream> #include <cstring> #include <cstdlib ...
- hdu 5952 Counting Cliques 求图中指定大小的团的个数 暴搜
题目链接 题意 给定一个\(n个点,m条边\)的无向图,找出其中大小为\(s\)的完全图个数\((n\leq 100,m\leq 1000,s\leq 10)\). 思路 暴搜. 搜索的时候判断要加进 ...
- POJ 3660 Cow Contest(求图的传递性)
题意: 给定n头牛, 然后有m个比较, 求出有多少头牛能确定自己的排名. 分析: 假设有一头牛a, 有ki头牛强于自己, kj头牛弱于自己, ki + kj == n-1时, 那么这头牛的排名就确定了 ...
- hdu4587 Two Nodes 求图中删除两个结点剩余的连通分量的数量
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4587 题目给了12000ms,对于tarjan这种O(|V|+|E|)复杂度的算法来说,暴力是能狗住的 ...
- 编程之美 set 7 求数组中的最长递增子序列
解法 1. 假设在目标数组 array[] 的前 i 个元素中, 最长递增子序列的长度为 LIS[i] 那么状态转移方程为 LIS[i] = max(1, LIS[k]+1) array[i+1] & ...
- poj 1679 The Unique MST 【次小生成树+100的小数据量】
题目地址:http://poj.org/problem?id=1679 2 3 3 1 2 1 2 3 2 3 1 3 4 4 1 2 2 2 3 2 3 4 2 4 1 2 Sample Outpu ...
- splunk中mongodb作用——存用户相关数据如会话、搜索结果等
About the app key value store The app key value store (or KV store) provides a way to save and retri ...
- SpringBoot中Post请求提交富文本数据量过大参数无法获取的问题
yml增加配置 # 开发环境配置 server: tomcat: max-http-form-post-size: -1
随机推荐
- [转载]使用RoboCopy 命令
经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...
- 微信小程序 - 考试前三排名实现
实现原理:利用背景图片以及nth-child实现
- Centos7 安装 Maven 3.5.*
下载 Apache Maven 访问 Maven官方网站,打开后找到下载链接,如下: 解压 tar zxvf apache-maven-3.5.3-bin.tar.gz 添加环境变量 打开 /etc/ ...
- VueJS条件语句:v-if、v-else、v-else-if
HTML:if-else <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- linux使用crontab实现PHP执行定时任务(转)
前几天写过一篇文章,利用单纯的php实现定时执行任务,但是效率不佳,对于linux来说用crontab实现更加合理. 首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 c ...
- 《JavaScript》——DOM
DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,执行开发者加入.移除和改动页 ...
- HTML5开发移动web应用——SAP UI5篇(8)
本次对之前学习的SAP UI5框架知识进行简单小结.以及重点部分知识的梳理. 1.在UI5使用过程中,命名空间的概念非常重要. 2.一般的sap组件引用格式例如以下: sap.ui.define([ ...
- Kindeditor上传图片回显不出来
原因之一: 图片成功上传但是回显不出来,这个时候,要检查返回的图片地址是否加了http://这个玩意,不然会将原来的头加上图片返回地址.
- django数据库同步时报错“Table 'XXX' already exists”
转自:http://blog.csdn.net/huanhuanq1209/article/details/77884014 执行manage.py makemigrations 未提示错误信息, 但 ...
- Appium python Uiautomator2 多进程问题
appium更新uiautomator后可以获取tost了,大家都尝试,课程中也讲解了,但是这些跑的时候都在单机上,当我们多机并发的时候会出现一个端口问题,因为我们appium最后会调用uiautom ...