吝啬的国度(深搜+vector)
来源:互联网 发布:linux内核开发教程 编辑:程序博客网 时间:2024/06/05 23:48
- 输入
- 第一行输入一个整数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
思路:用vector存入所有的情况,用vertor 有这样的一个功能-->
#include<vector>
vector<类型>v(名称)
v[x].push_back(y);
若x=2,y=3,则
2 3 若增加一组x=2,y=4,则2 3 4 v[x].sizeof()为3和4两个的长度vector有一个好处就是可以不用开他的大小,若溢出该定义的大小,则会增加一倍的内存空间
#include<stdio.h>#include<iostream>#include<queue>#include<string.h>#include<vector>using namespace std;int flag[100005];vector<int>vInts[100005];//建立一个vector储存void dfs(int s){ for(int i=0;i<vInts[s].size();i++) { if(flag[vInts[s][i]])//若已被编译 continue; flag[vInts[s][i]]=s;//将上一个的赋值给i dfs(vInts[s][i]);//搜 }}int main(){ int t; cin>>t; while(t--) { int i,x,y,n,s; cin>>n>>s; memset(flag,0,sizeof(flag)); memset(vInts,0,sizeof(vInts)); flag[s]=-1; for(i=1;i<=n-1;i++) { cin>>x>>y; vInts[x].push_back(y);//在x后面加一个y vInts[y].push_back(x); } dfs(s); cout<<flag[1]; for(i=2;i<=n;i++) cout<<" "<<flag[i]; cout<<endl; } return 0;}//1//10 1//1 9//1 8//8 10//10 3//8 6//1 2//10 4//9 5//3 7
0 0
- 吝啬的国度(深搜+vector)
- NYOJ 20 吝啬国度(vector,深搜)
- 吝啬的国度(深搜)
- 吝啬的国度 【vector】+【DFS】
- 吝啬的国度 深搜
- 吝啬的国度 20 (dfs++vector的用法)
- nyist 吝啬的国度(二维vector搜索)
- nyoj 20 吝啬的国度(vector+bfs)
- NYOJ 20 吝啬的国度 (DFS & vector)
- nyoj20吝啬的国度(深搜)
- nyoj 20 吝啬的国度 (深搜)
- nyoj-20--吝啬的国度-DFS+vector
- nyoj 20 吝啬的国度<vector容器>
- nyoj20 吝啬的国度(dfs+vector)
- NYOJ20 吝啬的国度 【深搜】
- 吝啬的国度(dfs)
- 吝啬的国度(DFS)
- 吝啬的国度(dfs)
- android学习笔记--->intent 之action
- 从带人看管理的两面
- 逃离迷宫-----广搜+dp
- magento 开启 template path hints
- Zstack之RSSI信号值获取以及显示
- 吝啬的国度(深搜+vector)
- 没有什么,开发ASP.NET时随便写写
- C++指针
- 学习总结二十一:Hbase集群搭建
- 21天学通Java学习笔记-Day12(MYsql-JDBC)
- 使用scipy进行聚类
- struts.xml中package的namespace属性
- 访问google的办法之一
- obj-c编程17:键值观察(KVO)