loj 1271
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26981
思路:题目的意思是求给定的起点到终点的最短路径序列,并且这个序列的字典顺序最小。我们可以先求最短路,然后对那些在最短路上的点进行深度优先搜索。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
using namespace std; const int MAXN=;
const int inf=<<;
vector<int>g[MAXN],vet,ans;
int n,st,ed; int dist[MAXN];
bool mark[MAXN]; struct Node{
int v,d;
Node(int vv,int dd){
v=vv,d=dd;
}
bool operator < (const Node &p) const {
if(p.d!=d)return p.d<d;
return p.v<v;
}
}; void Dijkstra()
{
memset(mark,false,sizeof(mark));
fill(dist,dist+MAXN,inf);
priority_queue<Node>que;
que.push(Node(st,));
dist[st]=;
while(!que.empty()){
Node p=que.top();
que.pop();
if(mark[p.v])continue;
mark[p.v]=true;
for(int i=;i<(int)g[p.v].size();i++){
int v=g[p.v][i];
if(mark[v])continue;
if(dist[p.v]+<dist[v]){
dist[v]=dist[p.v]+;
que.push(Node(v,dist[v]));
}
}
}
} bool dfs(int u)
{
set<int>st;
if(u==ed)return true;
for(int i=;i<g[u].size();i++){
int v=g[u][i];
if(dist[u]+==dist[v])st.insert(v);
}
set<int>::iterator iter;
for(iter=st.begin();iter!=st.end();iter++){
ans.push_back(*iter);
if(dfs(*iter))return true;
ans.pop_back();
}
return false;
} int main()
{
int _case,t=;
scanf("%d",&_case);
while(_case--){
scanf("%d",&n);
vet.clear();
ans.clear();
for(int i=;i<MAXN;i++)g[i].clear();
for(int i=;i<=n;i++){
int x;
scanf("%d",&x);
vet.push_back(x);
}
st=vet[],ed=vet[(int)vet.size()-];
for(int i=;i<(int)vet.size()-;i++){
int u=vet[i],v=vet[i+];
g[u].push_back(v);
g[v].push_back(u);
}
Dijkstra();
printf("Case %d:\n",t++);
ans.push_back(st);
dfs(st);
for(int i=;i<(int)ans.size()-;i++){
printf("%d ",ans[i]);
}
printf("%d\n",ed);
}
return ;
}
loj 1271的更多相关文章
- hdu 1271 整数对
看了别人的解题报告a了, 大致思路就是 A=a+b*10^k+c*10^(k+1) B=a+c*10^k (在A中取出一位数后) N=A+B=2*a+b*10^k+11*c*10^k 这样就好做了,再 ...
- [Noi2016]区间 BZOJ4653 洛谷P1712 Loj#2086
额... 首先,看到这道题,第一想法就是二分答案+线段树... 兴高采烈的认为我一定能AC,之后发现n是500000... nlog^2=80%,亲测可过... 由于答案是求满足题意的最大长度-最小长 ...
- Loj #2192. 「SHOI2014」概率充电器
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完 ...
- Loj #3096. 「SNOI2019」数论
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \ ...
- Loj #3093. 「BJOI2019」光线
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...
- Loj #3089. 「BJOI2019」奥术神杖
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...
- Loj #2542. 「PKUWC2018」随机游走
Loj #2542. 「PKUWC2018」随机游走 题目描述 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次 ...
- Loj #2331. 「清华集训 2017」某位歌姬的故事
Loj #2331. 「清华集训 2017」某位歌姬的故事 IA 是一名会唱歌的女孩子. IOI2018 就要来了,IA 决定给参赛选手们写一首歌,以表达美好的祝愿.这首歌一共有 \(n\) 个音符, ...
- 【LOJ#3097】[SNOI2019]通信(费用流)
[LOJ#3097][SNOI2019]通信(费用流) 题面 LOJ 题解 暴力就直接连\(O(n^2)\)条边. 然后分治/主席树优化连边就行了. 抄zsy代码,zsy代码是真的短 #include ...
随机推荐
- C#之显示效果
窗体最大化(包含任务栏): this.TopMost = true; , ); this.Size = Screen.PrimaryScreen.Bounds.Size; 窗体最大化(不包含任务栏): ...
- ios 获得设备型号方法
以前用UIScreen 的大小来判断设备类型,现在有了iphone6 和 iphone6 plus, 这种方法不能用了.因为当程序不提供相应的启动图片时,系统会把程序运行在320*568的size下, ...
- HttpWebRequest.GetResponse 方法
GetResponse 方法返回包含来自 Internet 资源的响应的 WebResponse 对象. 实际返回的实例是 HttpWebResponse,并且能够转换为访问 HTTP 特定的属性的类 ...
- Enum:Face The Right Way(POJ 3276)
面朝大海,春暖花开 题目大意:农夫有一群牛,牛排成了一排,现在需要把这些牛都面向正确的方向,农夫买了一个机器,一次可以处理k只牛,现在问你怎么处理这些牛才可以使操作数最小? 这道题很有意思,其实这道题 ...
- poj 2389.Bull Math 解题报告
题目链接:http://poj.org/problem?id=2389 题目意思:就是大整数乘法. 题目中说每个整数不超过 40 位,是错的!!!要开大点,这里我开到100. 其实大整数乘法还是第一次 ...
- 【工具】 原版完美激活 Flash builder 4.7 【非破解激活】
此方法原理在于激活 FlashBuilder 4.7 而不是破解(靠修改文件,或改变版本号),所以此破解更加稳定! FlashBuilder 4.7 下载地址: 32bit:http://trials ...
- 【mysql】Blob类型
来源:http://qgyang.blog.sohu.com/115847378.html 一般在需要存储较大数据时使用Bolb MySql的Bolb四种类型 MySQL中,BLOB是一个二进制大型对 ...
- js 如何在浏览器中获取当前位置的经纬度
这个有一定的误差哈,具体的误差是多少,有兴趣的朋友可以去测试下 直接上代码 index.html页面代码: <html> <head lang="en"> ...
- nodejs链接mongodb数据库
nodeJs链接mongodb数据库有两种方式,第一种是利用官方自己开发的npm包mongodb链接,第二种是利用第三方npm包mongoose链接:这里如果是window操作系统,建议用mongoo ...
- 多线程编程3 - GCD
一.简介 在iOS所有实现多线程的方案中,GCD应该是最有魅力的,因为GCD本身是苹果公司为多核的并行运算提出的解决方案.GCD在工作时会自动利用更多的处理器核心,以充分利用更强大的机器.GCD是Gr ...