German Collegiate Programming Contest 2015 计蒜课
// 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 计蒜课的更多相关文章
- 计蒜客 18492.Upside down primes-米勒拉宾判大素数 (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 K)
K. Upside down primes 传送门 这个题就是把大数按字符串输进去,判断一下是不是素数,然后反转180度,先判断反转之后的东西是不是一个数,如果是的话,再把这个数判一下是不是素数,如果 ...
- 计蒜客 18487.Divisions-大数的所有因子个数-Miller_Rabin+Pollard_rho-超快的(大数质因解+因子个数求解公式) (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 F)
这一场两个和大数有关的题目,都用到了米勒拉宾算法,有点东西,备忘一下. 题目传送门 F. Divisions 传送门 这个题是求一个数的所有因子个数,但是数据比较大,1e18,所以是大数的题目,正常的 ...
- 计蒜客 18488.Extreme Sort (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 E)
E.Extreme Sort 传送门 代码: #include<iostream> #include<cstdio> #include<cstring> #incl ...
- German Collegiate Programming Contest 2015
// Legacy Code #include <iostream> #include <cstdio> #include <cstring> #include & ...
- German Collegiate Programming Contest 2015(第三场)
Divisions David is a young boy and he loves numbers. Recently he learned how to divide two numbers.D ...
- 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\ ...
- 2018 German Collegiate Programming Contest (GCPC 18)
2018 German Collegiate Programming Contest (GCPC 18) Attack on Alpha-Zet 建树,求lca 代码: #include <al ...
- (寒假开黑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 ...
- (寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)
layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa&q ...
随机推荐
- 058 Length of Last Word 最后一个单词的长度
给定一个字符串, 包含大小写字母.空格 ' ',请返回其最后一个单词的长度.如果不存在最后一个单词,请返回 0 .注意事项:一个单词的界定是,由字母组成,但不包含任何的空格.案例:输入: " ...
- Win7环境下配置FTP
1.打开 控制面板-->程序和功能-->打开或关闭Windows资源,在弹出的窗体里找到 “Internet信息服务”,展开后选择“Ftp服务器",然后点击"确定&qu ...
- Linq 根据list属性去重复
s.Where((x, i) => s.FindIndex(z => z.ArticleTitle == x.ArticleTitle) == i).ToList();
- Css+Html
CSS样式 <style type="text/css"> tt.tt1 { <style type="text/css"> p { b ...
- 关于 SQL Server Reporting Services 匿名登录的解决方案
每次访问报表都需要windows验证,这样的报表给客户确实很说不过去. SSRS 可以匿名登录的设定步骤: 环境: 开发工具:SQL Server Business Intelligence Deve ...
- 多线程(Thread、线程创建、线程池)
第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程 ...
- SpringBoot热部署的两种方式
SpringBoot热部署方式一共有两种,分别使用两种不同的依赖 SpringBoot 1.3后才拥有SpringBoot devtools热部署 ①:spring-boot-devtools ② ...
- SpringBoot 封装返回类以及session 添加获取
1.创建返回类Result public class Result<T>{ /*错误码*/ private Integer code; /*提示信息 */ private String m ...
- 《spss统计分析与行业应用案例详解》:实例九 单一样本t检验
单一样本t检验的功能与意义 spss的单一样本t检验过程是瑕设检验中最基本也是最常用的方法之一,跟所有的假没检验一样,其依剧的基木原理也是统计学中的‘小概率反证法”原理.通过单一样本t检验.我们可以实 ...
- Web端 session cookies Application viewstate
URL传值/QueryString1.不占用服务器内存2.保密性差,传递值的长度有限 因为 上篇文章 保密性差,长度有限 传值有限只能传string类型的值 这篇文章学的知识是 session ...