noj 吝啬的国度

2024-01-05 20:08
文章标签 国度 noj 吝啬

本文主要是介绍noj 吝啬的国度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

建立一个双向的图,从出发点遍历一遍用数组存储上一个顶点即可。

import java.util.*;
public class Main 
{
static List<Integer> list;
static Map<Integer,List<Integer>> map;
static void store(int a,int b)
{
list=map.get(a);
if(list==null) list=new ArrayList<Integer>();
list.add(b);
map.put(a, list);
}
static void before(int n,int s,Map<Integer,List<Integer>> map)
{
int pre[]=new int[n+1];
boolean vis[]=new boolean[n+1];
int key=s;
vis[key]=true;
List<Integer> list=map.get(s);
for(int k=0;k<list.size();k++) pre[list.get(k)]=key;
Queue<List<Integer>> q=new LinkedList<List<Integer>>();
q.offer(list);
while(!q.isEmpty())
{
List<Integer> lis=q.poll();
for(int i=0;i<lis.size();i++)
{
key=lis.get(i);
if(!vis[key])
{
vis[key]=true;
List<Integer> value=map.get(key);
q.offer(value);
for(int k=0;k<value.size();k++) 
{
int t=value.get(k);
if(!vis[t])pre[t]=key;
}
}			
}
}	
pre[s]=-1;
for(int i=1;i<n;i++) System.out.print(pre[i]+" ");
System.out.println(pre[n]);
}
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
int m=cin.nextInt();
while(m--!=0)
{
map=new HashMap<Integer,List<Integer>>();
int n=cin.nextInt();
int s=cin.nextInt();
for(int i=1;i<n;i++)
{
int a=cin.nextInt();
int b=cin.nextInt();
store(a,b);
store(b,a);
}
before(n,s,map);		
}
}
}

这篇关于noj 吝啬的国度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/574013

相关文章

BZOJ 1006 神奇的国度 弦图最小染色 MCS算法

给定一个弦图,求最小染色 参考cdq的弦图与区间图论文 http://wenku.baidu.com/view/07f4be196c175f0e7cd13784.html http://tieba.baidu.com/p/2891159900 http://www.cnblogs.com/zhj5chengfeng/p/3279649.html

Nyoj 20 吝啬的国度[dfs]

题目链接:点击打开链接 开始的时候,思路是有的。就是纯粹的深搜。当然广搜也是可以的。本博客仅讲解深搜用法。 由于这是一棵生成树,所以,从出发点到达每个结点的路径是唯一的。 直接深搜就可以。 需要注意的一点是,每个路径都是无向的。为此在陪送了一次WA。 #include <cstdio>#include <cstring>#include <stack>#include <v

华硕ROG玩家国度安装Ubuntu20.04,安装过程一直卡着不动,以及快捷键不能用,不能调节键盘亮度等问题的解决办法,另附上安装Ubuntu18.04的方法

华硕ROG玩家国度是一个游戏本,用的硬件都比较新,所以安装Ubuntu18.04、Ubuntu20.04、Ubuntu20.1基本上都会面临一些问题,包括驱动或者安装过程不能进行等问题。 我一共测试了上述三个版本的系统,最终选择了Ubuntu20.04的系统。主要原因是Ubuntu18.04比较旧,不能安装rog的内核驱动,所以rog的快捷键也就无法使用(也有办法解决这些问题,但是比较麻烦!),

NYOJ 题目20吝啬的国度(DFS)

吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。   输入 第一行输入一个整数M表示测试数据共有M(1<=

NOJ 240题小明的调查统计(二)结构体按照多个条件排序

题目链接~~> 这一题其实一点也不难,属于简单题。开始wrong了好几次,后来才发现sort排序不稳定,需要在给结构体排序时先按成绩排,如果成绩一样,再按班级号从小到大排,如果班级 号一样,再按学号从小到大排!!! 代码: #include<stdio.h>#include<algorithm>using namespace std;struct zhang{int a,b,exam

NOJ 16题 矩形嵌套 DP(单调递增子序列)

题目链接~~> 本题为简单DP,需用单调递增子序列,不废话了一切尽在代码中。   代码: #include<stdio.h>#include<algorithm>using namespace std;int dp[1005];struct zhang{int x,y;}t[1005];bool cmp(const zhang &a,const zhang &b){retu

NOJ 523题/杭电1253题 亡命逃窜

题目链接~~> 开始在杭电上做这题时先是超内存,然后是超时,剪枝了一下结果wrong了,最后参考了一下才AC; 代码: #include<stdio.h>#include<queue>using namespace std;int a[50][50][50],n,m,u,D;int dx[7]={1,-1,0,0,0,0},dy[7]={0,0,1,-1,0,0},dz[7]={0,

nyoj-20--吝啬的国度-DFS+vector

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=20 #include<stdio.h>#include<string.h>#include<vector>using namespace std;vector<int> G[100005];int s[100005];int vis[100005];void dfs(i

吝啬的国度--无向图,广度优先遍历,内存爆掉了

地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=20 吝啬的国度 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经

3083: 遥远的国度

唔,没初始化 wa了一次… 思路很一眼。 就是说 考虑 树剖 如果 查询点是首都的祖先,那么查询点构成的子树就是 整个树除了 查询点包含 首都的儿子以外所有点。 那么 知道一个子树在树剖上是连续一段区间, 即 现在需要求 出 包含首都的那棵子树的根, 用类似倍增lca的方法即可。 对于查询点不是首都的祖先的情况,答案直接为 查询点这棵子树 的答案 搞定 c++代码如下: #inc