// Change of Scenery
1 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <utility>
#include <queue>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
int n,m,k;
const int N=;
const ll inf=1e10+;
const ll mod=1e9+;
struct Node{
int to;
ll w;
Node(){}
Node(int TO,ll W){
to=TO;
w=W;
}
};
vector<Node>vec[N];
int prenum[N];
ll dis[N];
void bfs(int sta){
priority_queue<P,vector<P>,greater<P> >que;
dis[sta]=;
prenum[sta]=;
que.push(P(,sta));
while(!que.empty())
{
P q=que.top();
que.pop();
int v=q.second;
if(dis[v]<q.first) continue;
for(int i=;i<vec[v].size();i++){
Node Nod=vec[v][i];
int t=Nod.to;
if(dis[t]>dis[v]+Nod.w){
dis[t]=dis[v]+Nod.w;
prenum[t]=prenum[v];
que.push(P(dis[t],t));
}
else if(dis[t]==dis[v]+Nod.w){
prenum[t]=(prenum[t]+prenum[v])%mod;//关键点
//本题的路径数目可能很多,long long 也不一定满足,因为路径数目用的是
//乘法原理,因此要取余
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
int xx;
for(int i=;i<k;i++){
scanf("%d",&xx);
}
int x,y;
ll z;
for(int i=;i<m;i++){
scanf("%d%d%lld",&x,&y,&z);
vec[x].push_back(Node(y,z));
vec[y].push_back(Node(x,z));//这是个无向图
}
for(int i=;i<=n;i++)
dis[i]=inf;
bfs();
if(prenum[n]<){
printf("no\n");
return ;
}
else{
printf("yes\n");
}
return ;
}
 // German Collegiate Programming Contest 2015 计蒜课 Change of Scenery
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <utility>
#include <queue>
using namespace std;
typedef long long ll;
typedef pair<int,int>P;
int n,m,k;
const int N=;
const ll inf=1e10+;
const ll mod=1e9+;
struct Node{
int to;
ll w;
Node(){}
Node(int TO,ll W){
to=TO;
w=W;
}
};
vector<Node>vec[N];
int prenum[N];
ll dis[N];
void bfs(int sta){
priority_queue<P,vector<P>,greater<P> >que;
dis[sta]=;
prenum[sta]=;
que.push(P(,sta));
while(!que.empty())
{
P q=que.top();
que.pop();
int v=q.second;
if(dis[v]<q.first) continue;
for(int i=;i<vec[v].size();i++){
Node Nod=vec[v][i];
int t=Nod.to;
if(dis[t]>dis[v]+Nod.w){
dis[t]=dis[v]+Nod.w;
prenum[t]=prenum[v];
que.push(P(dis[t],t));
}
else if(dis[t]==dis[v]+Nod.w){
prenum[t]=(prenum[t]+prenum[v])%mod;//关键点
//本题的路径数目可能很多,long long 也不一定满足,因为路径数目用的是
//乘法原理,因此要取余
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
int xx;
for(int i=;i<k;i++){
scanf("%d",&xx);
}
int x,y;
ll z;
for(int i=;i<m;i++){
scanf("%d%d%lld",&x,&y,&z);
vec[x].push_back(Node(y,z));
vec[y].push_back(Node(x,z));//这是个无向图
}
for(int i=;i<=n;i++)
dis[i]=inf;
bfs();
if(prenum[n]<){
printf("no\n");
return ;
}
else{
printf("yes\n");
}
return ;
}

German Collegiate Programming Contest 2015 计蒜课的更多相关文章

  1. 计蒜客 18492.Upside down primes-米勒拉宾判大素数 (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 K)

    K. Upside down primes 传送门 这个题就是把大数按字符串输进去,判断一下是不是素数,然后反转180度,先判断反转之后的东西是不是一个数,如果是的话,再把这个数判一下是不是素数,如果 ...

  2. 计蒜客 18487.Divisions-大数的所有因子个数-Miller_Rabin+Pollard_rho-超快的(大数质因解+因子个数求解公式) (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 F)

    这一场两个和大数有关的题目,都用到了米勒拉宾算法,有点东西,备忘一下. 题目传送门 F. Divisions 传送门 这个题是求一个数的所有因子个数,但是数据比较大,1e18,所以是大数的题目,正常的 ...

  3. 计蒜客 18488.Extreme Sort (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 E)

    E.Extreme Sort 传送门 代码: #include<iostream> #include<cstdio> #include<cstring> #incl ...

  4. German Collegiate Programming Contest 2015

    // Legacy Code #include <iostream> #include <cstdio> #include <cstring> #include & ...

  5. German Collegiate Programming Contest 2015(第三场)

    Divisions David is a young boy and he loves numbers. Recently he learned how to divide two numbers.D ...

  6. 2015 German Collegiate Programming Contest (GCPC 15) + POI 10-T3(12/13)

    $$2015\ German\ Collegiate\ Programming\ Contest\ (GCPC 15) + POI 10-T3$$ \(A.\ Journey\ to\ Greece\ ...

  7. 2018 German Collegiate Programming Contest (GCPC 18)

    2018 German Collegiate Programming Contest (GCPC 18) Attack on Alpha-Zet 建树,求lca 代码: #include <al ...

  8. (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)

    layout: post title: (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017) au ...

  9. (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)

    layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...

随机推荐

  1. SQL server 游标,随机数使用

    SELECT * FROM [goods] DECLARE test_cursor CURSOR scroll FOR SELECT goods_no, [unitprice] FROM [goods ...

  2. Spark Mllib里使用贝氏二元分类时如何将数值特征字段用StandardScaler进行标准化(图文详解)

    不多说,直接上干货! NaiveBayes数值特征字段一定要大于0,所以加入下述命令将负数转换为0. 朴素贝叶斯分类算法在进行数据标准化时,参数withMean必须设置为false. 具体,见 Had ...

  3. File类--System.out.print(Object obj)的理解

    一.File 类(java.io) 概述:Java中使用File类来表示文件或者文件夹对象!     抽象路径名:描述文件或文件夹时,使用的路径符号,就是一个对象的字符串表示形式,如"c:\ ...

  4. android图片缩放平移

    <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android=" ...

  5. redis 知识归档

    中文版redis命令 http://www.redis.net.cn/order/    redis例子 https://github.com/ServiceStack/ServiceStack.Ex ...

  6. 使用poi或jxl,通过java读写xls、xlsx文档

    package nicetime.com.baseutil; import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffExcepti ...

  7. 64位Windows系统下32位应用程序连接MySql

    1.首先得安装“Connector/ODBC”,就是Mysql的ODBC驱动,这个是与应用程序相关的,而不是与操作系统相关的,也就是说,不管你的系统是x64还是x86,只要你的应用程序是x86的那么, ...

  8. 【Python图像特征的音乐序列生成】如何标记照片的特征

    目前我能想到的办法是这样的: 1,提取照片中的实体特征,借用某个pre-trained model进行tag标记. 2,将特征组合起来,形成一个bag-of-word model,然后将这个向量作为输 ...

  9. python基础教程总结15——6 CGI远程编辑

    功能: 将文档作为普通网页显示: 在web表单的文本域内显示文档: 保存表单中的文本: 使用密码保护文档: 容易拓展,支持处理多余一个文档的情况 1.CGI CGI(Comment Gateway I ...

  10. 多目标检测分类 RCNN到Mask R-CNN

    最近做目标检测需要用到Mask R-CNN,之前研究过CNN,R-CNN:通过论文的阅读以及下边三篇博客大概弄懂了Mask R-CNN神经网络.想要改进还得努力啊... 目标检测的经典网络结构,顺序大 ...