NYOJ 20吝啬的国度(vector容器+dfs||邻接表+dfs)
来源:互联网 发布:qq聊天软件 编辑:程序博客网 时间:2024/05/15 21:01
- 描述
- 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
- 输入
- 第一行输入一个整数M表示测试数据共有M(1<=M<=5)组
每组测试数据的第一行输入一个正整数N(1<=N<=100000)和一个正整数S(1<=S<=100000),N表示城市的总个数,S表示参观者所在城市的编号
随后的N-1行,每行有两个正整数a,b(1<=a,b<=N),表示第a号城市和第b号城市之间有一条路连通。 - 输出
- 每组测试数据输N个正整数,其中,第i个数表示从S走到i号城市,必须要经过的上一个城市的编号。(其中i=S时,请输出-1)
- 样例输入
110 11 91 88 1010 38 61 210 49 53 7
- 样例输出
-1 1 10 10 9 8 3 1 1 8
第一次用(逃
ac代码:
#include<stdio.h>#include<iostream>#include<vector>using namespace std;int num,bz[100001],last[100001],n,m,q,w; vector<int>map[100001];//容器 void dfs(int v) { bz[v]=1; last[v]=num; for(int i=0;i<map[v].size();i++)//深搜 { if(bz[map[v][i]]==0) { num=v; dfs(map[v][i]); } } } int main() { int t,i; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<=n;i++) bz[i]=0; for(i=0;i<=n;i++) { map[i].clear(); } for(i=1;i<n;i++) { scanf("%d%d",&q,&w); map[q].push_back(w); map[w].push_back(q); } num=-1; dfs(m); for(i=1;i<n+1;i++) printf("%d ",last[i]); printf("\n"); } return 0; }
邻接表:
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<queue>#define MAXN 100100#define INF 0xfffffff#define max(a,b) a>b?a:b#define min(a,b) a>b?b:ausing namespace std;struct Edge{int from,to;int next;}edge[MAXN];int head[MAXN];//bool vis[MAXN];int num,bz,ss;int vis[MAXN];void Add(int u,int v){Edge E={u,v,head[u]};edge[num]=E;head[u]=num++;}void DFS(int s,int e){//int i;if(bz)return;for(int i=head[s];i!=-1;i=edge[i].next){if(vis[edge[i].to]) continue;if(edge[i].to==e){//printf("%d ",edge[i].from);ss=edge[i].from;bz=1;return ;}vis[edge[i].to]=1;DFS(edge[i].to,e);vis[edge[i].to]=0;}}int main(){int T;int i;int a,b;int n,s;scanf("%d",&T);while(T--){num=0;memset(head,-1,sizeof(head));scanf("%d%d",&n,&s);for(i=1;i<n;++i){scanf("%d%d",&a,&b);Add(a,b);Add(b,a);}int num;for(i=1;i<=n;++i){if(i==s){printf(i==n?"-1\n":"-1 ");continue;}bz=0;memset(vis,0,sizeof(vis));DFS(s,i);printf(i==n?"%d\n":"%d ",ss);}}return 0;}
0 0
- NYOJ 20吝啬的国度(vector容器+dfs||邻接表+dfs)
- nyoj 20-吝啬的国度(邻接表&&DFS)
- nyoj-20--吝啬的国度-DFS+vector
- nyoj-20-吝啬的国度-DFS+容器
- NYOJ 20 吝啬的国度 (DFS & vector)
- Nyoj 20 吝啬的国度(dfs)
- NYOJ 20 吝啬的国度 (DFS)
- NYOJ-20 吝啬的国度(DFS)
- nyoj 20 吝啬的国度 (dfs)
- nyoj 20 吝啬的国度(dfs)
- nyoj 20 吝啬的国度【dfs+vector存图】
- nyoj 20 吝啬的国度<vector容器>
- 【DFS】nyoj 20 吝啬的国度
- Nyoj 20 吝啬的国度[dfs]
- NYOJ 20 吝啬的国度 【DFS】
- NYOJ 20--吝啬的国度 【DFS】
- nyoj 20 【吝啬的国度】 【DFS】
- DFS-NYOJ-20-吝啬的国度
- 26款 网络会议/视频会议开源软件
- 哈希表(hash table)的基本知识
- HLJU 1220: AC100天 (枚举)
- VS2013 调试时的 0xCCCCCCCC 读取字符串的字符时出错
- java4Android(6)函数的复写(override)/对象的转型(向上转型/向下转型)
- NYOJ 20吝啬的国度(vector容器+dfs||邻接表+dfs)
- 07库函数编写
- LeetCode 之 ZigZag Conversion — C 实现
- 这些年看过的电影
- 推荐15个 Node.js 开发工具
- 辛星浅析html中的name和id的区别
- 比较基础常用的java面试题(3)
- 详解android:scaleType属性
- JavaScript学习总结-技巧、实用函数、简洁方法、编程细节