【蓝桥杯】历届试题 网络寻路(运行超时)
2016-04-08 20:25
423 查看
历届试题 网络寻路
时间限制:1.0s 内存限制:256.0MB
问题描述
X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。
源地址和目标地址可以相同,但中间节点必须不同。
如下图所示的网络。
1 -> 2 -> 3 -> 1 是允许的
1 -> 2 -> 1 -> 2 或者 1 -> 2 -> 3 -> 2 都是非法的。
输入格式
输入数据的第一行为两个整数N M,分别表示节点个数和连接线路的条数(1<=N<=10000; 0<=M<=100000)。
接下去有M行,每行为两个整数 u 和 v,表示节点u 和 v 联通(1<=u,v<=N , u!=v)。
输入数据保证任意两点最多只有一条边连接,并且没有自己连自己的边,即不存在重边和自环。
输出格式
输出一个整数,表示满足要求的路径条数。
样例输入1
3 3
1 2
2 3
1 3
样例输出1
6
样例输入2
4 4
1 2
2 3
3 1
1 4
样例输出2
10
这道题运行超时了!!下面是超时代码:
Java源代码:
时间限制:1.0s 内存限制:256.0MB
问题描述
X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。
源地址和目标地址可以相同,但中间节点必须不同。
如下图所示的网络。
1 -> 2 -> 3 -> 1 是允许的
1 -> 2 -> 1 -> 2 或者 1 -> 2 -> 3 -> 2 都是非法的。
输入格式
输入数据的第一行为两个整数N M,分别表示节点个数和连接线路的条数(1<=N<=10000; 0<=M<=100000)。
接下去有M行,每行为两个整数 u 和 v,表示节点u 和 v 联通(1<=u,v<=N , u!=v)。
输入数据保证任意两点最多只有一条边连接,并且没有自己连自己的边,即不存在重边和自环。
输出格式
输出一个整数,表示满足要求的路径条数。
样例输入1
3 3
1 2
2 3
1 3
样例输出1
6
样例输入2
4 4
1 2
2 3
3 1
1 4
样例输出2
10
这道题运行超时了!!下面是超时代码:
Java源代码:
import java.util.Scanner; public class Main { static Node[] tab = null; static int[] visit = new int[10001]; static int[] way = new int[10001]; static int cnt = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n, m, u, v, i; n = sc.nextInt(); m = sc.nextInt(); Init(n); while (m-- > 0) { u = sc.nextInt(); v = sc.nextInt(); Insert(u, v); Insert(v, u); } for (i = 1; i <= n; i++) { for (int j = 0; j < visit.length; j++) { visit[j] = 0; } dfs(i, 0, i); } System.out.println(cnt); } static void dfs(int x, int n, int s) { visit[x] = 1; way = x; Node p = tab[x]; if (n >= 3) { cnt++; return; } while ((p = p.pNext) != null) { if ((visit[p.data] != 1) || (p.data == s && n == 2)) { dfs(p.data, n + 1, s); if (p.data != s) { visit[p.data] = 0; } } } } static void Init(int n) { int i; tab = new Node[n + 1]; for (i = 1; i <= n; i++) { tab[i] = new Node(); tab[i].data = i; tab[i].pNext = null; } } static void Insert(int n, int x) { Node p = tab ; while (p.pNext != null) { p = p.pNext; } Node ne = new Node(); p.pNext = ne; ne.data = x; ne.pNext = null; } } class Node { int data = 0; Node pNext = null; }
评测点序号 | 评测结果 | 得分 | CPU使用 | 内存使用 | 下载评测数据 |
---|---|---|---|---|---|
1 | 正确 | 20.00 | 156ms | 23.46MB | 输入 输出 |
2 | 正确 | 20.00 | 296ms | 31.90MB | 输入 输出 |
3 | 正确 | 20.00 | 499ms | 36.26MB | 输入 输出 |
4 | 运行超时 | 0.00 | 运行超时 | 73.03MB | 输入 输出 |
5 | 运行超时 | 0.00 | 运行超时 | 89.96MB | 输入 输出 |
相关文章推荐
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
- 七层协议入门
- Linux TCP 链接状态
- HTTP Status 404 - The requested resource is not available.
- 嵌入式设备使用的web服务器 ——thttpd移植 (非常详细,仔细品味一定会有收获)
- android Jsoup获取网站内容(实例为新闻标题获取) —android网络必学
- 关于ios9.0之后不能打开https的解决办法
- linux 常用命令二 网络
- Vmware虚拟机三种网络模式详解
- 浅谈套接字编程—TCP
- okhttp3 post 数据打包方法
- iOS9中 http协议请求问题
- JavaScript逻辑操作符 转载自博客园 http://www.cnblogs.com/pigtail/archive/2012/03/09/2387486.html
- [android]一个关于UDP和TCP的项目实践(二)
- AFHTTPSessionManager status code
- HTTP STATE CODE
- tomcat7 配置https
- HTTP缓存原理介绍
- 使用Golang 搭建http web服务器
- Http基本的错误码