• German Collegiate Programming Contest 2015 计蒜课


     
    // Change of Scenery
    1
    #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <vector> 6 #include <utility> 7 #include <queue> 8 using namespace std; 9 typedef long long ll; 10 typedef pair<int,int>P; 11 int n,m,k; 12 const int N=10010; 13 const ll inf=1e10+9; 14 const ll mod=1e9+7; 15 struct Node{ 16 int to; 17 ll w; 18 Node(){} 19 Node(int TO,ll W){ 20 to=TO; 21 w=W; 22 } 23 }; 24 vector<Node>vec[N]; 25 int prenum[N]; 26 ll dis[N]; 27 void bfs(int sta){ 28 priority_queue<P,vector<P>,greater<P> >que; 29 dis[sta]=0; 30 prenum[sta]=1; 31 que.push(P(0,sta)); 32 while(!que.empty()) 33 { 34 P q=que.top(); 35 que.pop(); 36 int v=q.second; 37 if(dis[v]<q.first) continue; 38 for(int i=0;i<vec[v].size();i++){ 39 Node Nod=vec[v][i]; 40 int t=Nod.to; 41 if(dis[t]>dis[v]+Nod.w){ 42 dis[t]=dis[v]+Nod.w; 43 prenum[t]=prenum[v]; 44 que.push(P(dis[t],t)); 45 } 46 else if(dis[t]==dis[v]+Nod.w){ 47 prenum[t]=(prenum[t]+prenum[v])%mod;//关键点 48 //本题的路径数目可能很多,long long 也不一定满足,因为路径数目用的是 49 //乘法原理,因此要取余 50 } 51 } 52 } 53 } 54 int main() 55 { 56 scanf("%d%d%d",&n,&m,&k); 57 int xx; 58 for(int i=0;i<k;i++){ 59 scanf("%d",&xx); 60 } 61 int x,y; 62 ll z; 63 for(int i=0;i<m;i++){ 64 scanf("%d%d%lld",&x,&y,&z); 65 vec[x].push_back(Node(y,z)); 66 vec[y].push_back(Node(x,z));//这是个无向图 67 } 68 for(int i=1;i<=n;i++) 69 dis[i]=inf; 70 bfs(1); 71 if(prenum[n]<2){ 72 printf("no "); 73 return 0; 74 } 75 else{ 76 printf("yes "); 77 } 78 return 0; 79 }
     1 // German Collegiate Programming Contest 2015 计蒜课 Change of Scenery
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <algorithm>
     5 #include <cstring>
     6 #include <vector>
     7 #include <utility>
     8 #include <queue>
     9 using namespace std;
    10 typedef long long ll;
    11 typedef pair<int,int>P;
    12 int n,m,k;
    13 const int N=10010;
    14 const ll  inf=1e10+9;
    15 const  ll mod=1e9+7;
    16 struct Node{
    17     int  to;
    18     ll w;
    19     Node(){}
    20     Node(int TO,ll W){
    21         to=TO;
    22         w=W;
    23     }
    24 };
    25 vector<Node>vec[N];
    26 int   prenum[N];
    27 ll dis[N];
    28 void bfs(int sta){
    29     priority_queue<P,vector<P>,greater<P> >que;
    30     dis[sta]=0;
    31     prenum[sta]=1;
    32     que.push(P(0,sta));
    33     while(!que.empty())
    34     {
    35         P q=que.top();
    36         que.pop();
    37         int v=q.second;
    38         if(dis[v]<q.first)  continue;
    39         for(int i=0;i<vec[v].size();i++){
    40             Node Nod=vec[v][i];
    41             int t=Nod.to;
    42             if(dis[t]>dis[v]+Nod.w){
    43                 dis[t]=dis[v]+Nod.w;
    44                 prenum[t]=prenum[v];
    45                 que.push(P(dis[t],t));
    46             }
    47             else if(dis[t]==dis[v]+Nod.w){
    48                 prenum[t]=(prenum[t]+prenum[v])%mod;//关键点
    49                 //本题的路径数目可能很多,long long 也不一定满足,因为路径数目用的是
    50                 //乘法原理,因此要取余
    51             }
    52         }
    53     }
    54 }
    55 int  main()
    56 {
    57      scanf("%d%d%d",&n,&m,&k);
    58           int xx;
    59          for(int i=0;i<k;i++){
    60              scanf("%d",&xx);
    61          }
    62          int  x,y;
    63          ll z;
    64          for(int i=0;i<m;i++){
    65              scanf("%d%d%lld",&x,&y,&z);
    66              vec[x].push_back(Node(y,z));
    67              vec[y].push_back(Node(x,z));//这是个无向图 
    68          }
    69          for(int i=1;i<=n;i++)
    70              dis[i]=inf;
    71          bfs(1);
    72          if(prenum[n]<2){
    73              printf("no
    ");
    74              return  0;
    75              }
    76              else{
    77                  printf("yes
    ");
    78              }
    79              return 0;
    80 }
  • 相关阅读:
    tcpreplay安装使用经验
    Linux 性能优化之 IO 子系统 系列 图
    深入理解Fsync----JBD内核调试 专业打杂程序员 @github yy哥
    LINUX 文件系统JBD ----深入理解Fsync
    通过查看mysql 配置参数、状态来优化你的mysql
    linux IO 内核参数调优 之 原理和参数介绍
    Mysql参数详解
    Mysql show Status参数详解
    MYSQL: Handler_read_%参数说明
    mysql的优化措施,从sql优化做起
  • 原文地址:https://www.cnblogs.com/tingtin/p/9314722.html
Copyright © 2020-2023  润新知