UVA 208Firetruck
来源:互联网 发布:腾讯期货数据接口 编辑:程序博客网 时间:2024/06/01 08:01
题目大意:给定节点树不超过20的图,图的节点已数字标识,再给定某个节点的序号,求从节点1到节点k的所有路径,以字典序排序。
这一题 的关键在于 需要先判断是否能够从节点1到达节点k,也就是使用并查集来判断,同时也需要去除那些不能够到达k的点,这就是剪枝,否则这题会超时。
//// main.cpp// uva 208 - Firetruck//// Created by XD on 15/7/30.// Copyright (c) 2015年 XD. All rights reserved.//#include <iostream>#include <string>#include <queue>#include <stack>#include <stdio.h>#include <stdlib.h>#include <math.h>#include<vector>#include <string.h>#include <string>#include <algorithm>#include <set>#include <map>#include <cstdio>using namespace std ;int flag[21] ;int g[21][21] ;int n , k ;int p[21] ;int r[21] ;int num ;void init(){ memset(flag, 0, sizeof(flag)) ; memset(g, 0, sizeof(g)) ; for (int i = 0; i < 21; i++) { p[i] = i ; r[i] = 0 ; }}int find(int x){ if (p[x]!=x) { p[x] = find(p[x]) ; } return p[x] ;}void link(int x ,int y ){ if (r[x] < r[y]) { p[x] =y ; } else{ p[y] = x ; if (r[x] == r[y]) { r[x]+= 1 ; } }}void UNION_SET(int x , int y ){ link(find(x), find(y)) ;}int max(int i , int j ){ return i > j ? i : j ;}int path[20] ;void dfs(int u,int d ){ if (u == k ) { printf("1" ) ; int i = 2 ; num++ ; for (i = 1; i < d; i++) { printf(" %d" ,path[i]) ; } printf("\n") ; return ; } for (int i = 1; i <= n ; i++) { if (!flag[i] && g[u][i]) { flag[i]=1 ; path[d] = i ; dfs(i , d+1) ; flag[i] = 0 ; } } }int main() { int casenum = 0 ; while (scanf("%d" ,&k)==1) { num = 0 ; n = 0 ; int v ,u ; init() ; printf("CASE %d:\n" , ++casenum) ; while (scanf("%d%d" ,&v , &u)==2&&u+v!= 0 ) { n = max(n,max(u,v)) ; g[u][v] = g[v][u] =1 ; if (find(u)!= find(v)) { UNION_SET(u, v) ; } } for (int i = 1; i <=n;i++) { find(i) ; } for (int i = 1; i <=n; i++) { if (p[k] != p[i]) { flag[i] = 1 ; } } if (flag[1]) { printf("There are 0 routes from the firestation to streetcorner %d.\n" , k) ; } else{ flag[1] = 1 ; path[0] = 1 ; dfs(1,1) ; printf("There are %d routes from the firestation to streetcorner %d.\n" ,num, k) ; } } return 0;}
0 0
- uva 208 - Firetruck
- uva 208 - Firetruck
- uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 Firetruck
- uva 208 Firetruck
- uva 208 Firetruck
- UVa:208 Firetruck
- UVa 208 - Firetruck
- Uva 208 - Firetruck
- UVa 208 - Firetruck
- UVA 208 - Firetruck
- UVA - 208 Firetruck
- uva 208 Firetruck
- UVA - 208 Firetruck
- 知识点梳理总结(1jsp页面篇)
- EasyUi 日历组件 datebox 开始时间与结束时间限制
- easyui在java-itoo的管理流程
- 面试会经常碰到的几个问题
- Runtime类的学习
- UVA 208Firetruck
- 对老赵写的简单性能计数器的修改
- ecstore2.0虚拟环境的数据库配置
- facebook 登陆获取不到email
- python os.path模块常用方法详解
- Shiro学习(2)身份验证
- leetcode之路028 Implement strStr()
- 关于C++ const 的全面总结
- oc继承self,super的作用