nyoj 20 吝啬的国度(vector+bfs)
来源:互联网 发布:淘宝店铺如何设置客服 编辑:程序博客网 时间:2024/04/29 21:33
- 输入
- 第一行输入一个整数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
#include<cstdio>#include<cstring>#include<vector>#include<queue>using namespace std;#define maxx 100005vector<int>path[maxx];int mark[maxx],result[maxx];int main(){ int cases,n,m,start,end,i; scanf("%d",&cases); while(cases--) { for(i=0;i<maxx;i++) { path[i].clear(); mark[i]=0; result[i]=0; } scanf("%d%d",&n,&m); for(i=0;i<n-1;i++) {//注意是无向图 scanf("%d%d",&start,&end); path[start].push_back(end); path[end].push_back(start); } queue<int>q; q.push(m); mark[m]=1; result[m]=-1; while(!q.empty()) { int x=q.front(); q.pop(); int size=path[x].size(); for(i=0;i<size;i++) { if(!mark[path[x][i]]) { q.push(path[x][i]); mark[path[x][i]]=1; result[path[x][i]]=x; } } } for(i=1;i<n;i++) { printf("%d ",result[i]); } printf("%d\n",result[n]); } return 0;}
java ac代码
import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Vector;class result{Vector<Integer>vector=new Vector<Integer>();}public class Main {static result results[];static int path[],start,citynumber;static boolean mark[];public static void bfs(){ Queue<Integer>queue=new LinkedList<Integer>(); queue.add(start); mark[start]=true; while(!queue.isEmpty()) { int s=queue.remove(); for(int i=0;i<results[s].vector.size();i++) { if(!mark[results[s].vector.get(i)]) { path[results[s].vector.get(i)]=s; mark[results[s].vector.get(i)]=true; queue.add(results[s].vector.get(i)); } } }}public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int cases=scanner.nextInt();while(cases--!=0){ citynumber=scanner.nextInt(); start=scanner.nextInt(); results=new result[citynumber+4]; path=new int[citynumber+4]; mark=new boolean[citynumber+4]; Arrays.fill(mark, false); Arrays.fill(path, -1); for(int i=0;i<=citynumber;i++) { results[i]=new result(); } for(int i=0;i<citynumber-1;i++) { int x,y; x=scanner.nextInt(); y=scanner.nextInt(); results[x].vector.add(y); results[y].vector.add(x); } bfs(); for(int i=1;i<=citynumber;i++) { System.out.print(path[i]+" "); }}}}
- nyoj 20 吝啬的国度(vector+bfs)
- nyoj-20--吝啬的国度-DFS+vector
- nyoj 20 吝啬的国度<vector容器>
- NYOJ 19 吝啬的国度(bfs)
- NYOJ 20 吝啬国度(vector,深搜)
- NYOJ 题目20 吝啬的国度(邻接表+BFS)
- nyoj 20 吝啬的国度(邻接表+bfs)
- NYOJ 20 吝啬的国度 (DFS & vector)
- NYOJ 20 吝啬的国度 【BFS+链式前向星建图,Vector建图】
- NYOJ 20 吝啬的国度 (搜索)
- Nyoj 20 吝啬的国度(dfs)
- NYOJ 20 吝啬的国度 (DFS)
- nyoj 20 吝啬的国度 (深搜)
- NYOJ-20 吝啬的国度(DFS)
- nyoj 20 吝啬的国度 (dfs)
- nyoj 20 吝啬的国度(dfs)
- ACM--BFS--图--nyoj 20--吝啬的国度
- nyoj 20 吝啬的国度【dfs+vector存图】
- 通过CSS3 Media Query实现响应式Web设计
- 【jQuery 学习笔记】初识jQuery
- USB数据包的格式是小端的(little-endian)
- Squid反向代理服务器架设
- 2012-06-29 09:01 JS代码判断浏览器版本,支持IE6,IE7,IE8,IE9!
- nyoj 20 吝啬的国度(vector+bfs)
- 使用NetFlow分析网络异常流量(2)
- cookie和session的区别的理解(http://www.jz123.cn/text/196.html)以及页面间数据的传递
- layout_weight体验(实现按比例显示)
- 移动互联网向2.0时代转变
- 短小精悍的Bug可以撼程序强盛
- 谈谈网站静态化
- div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法
- “数字乌鲁木齐”开启数据管理新思路