• bzoj 2763


    好几天没怎么发了。。。最近去看了下初赛题。。。

    水题,最短路还有免费(我怎么没有!!),分几次免费乱搞一下就可以。。不过路径权值居然还有0,就WA了一下。。。写spfa的习惯得改改。。。

     1 #include<bits/stdc++.h>
     2 #define inc(i,l,r) for(i=l;i<=r;i++)
     3 #define dec(i,l,r) for(i=l;i>=r;i--)
     4 #define inf 1e9
     5 #define ll long long
     6 #define mem(a,b) memset(a,b,sizeof(a))
     7 #define NM 10000+5
     8 #define nm 50000+5
     9 using namespace std;
    10 struct edge{
    11     int v,t;
    12     edge *next;
    13 }e[2*nm],*h[NM];
    14 queue<int >q;
    15 int o,n,m,i,k,p,x,y,d[11][NM],t,s;
    16 bool v[NM];
    17 int read(){
    18     int x=0,f=1;char ch=getchar();
    19     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    20     while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
    21     return x*f;
    22 }
    23 void add(int x,int y,int v){
    24     e[++s].t=y;e[s].v=v;e[s].next=h[x];h[x]=&e[s];
    25 }
    26 int spfa(int x,int y){
    27     int s=inf;
    28     mem(d,-1);
    29     inc(k,0,p){
    30     mem(v,0);
    31     q.push(x);v[x]++;d[k][x]=0;
    32     while(!q.empty()){
    33         int t=q.front();q.pop();v[t]=false;
    34         for(edge *j=h[t];j;j=j->next){
    35         if(d[k][j->t]==-1||d[k][j->t]>d[k][t]+j->v){
    36             d[k][j->t]=d[k][t]+j->v;
    37             if(!v[j->t]){
    38                 v[j->t]++;q.push(j->t);
    39             }
    40         }
    41         if(k>0)
    42         if(d[k][j->t]==-1||d[k][j->t]>d[k-1][t]){
    43             d[k][j->t]=d[k-1][t];
    44             if(!v[j->t]){
    45                 v[j->t]++;q.push(j->t);
    46             }
    47         }
    48         }
    49     }
    50     if(d[k][y]>=0)s=min(d[k][y],s);
    51     }
    52     return s;
    53 }
    54 int main(){
    55     n=read();m=read();p=read();o=read();t=read();
    56     inc(i,1,m){
    57         x=read();y=read();k=read();
    58         add(x,y,k);add(y,x,k);
    59     }
    60     printf("%d",spfa(o,t));
    61     return 0;
    62 }
    View Code
  • 相关阅读:
    使用curses管理基于文本的屏幕--(四)
    让Debian服务器支持jsp程序
    使用curses管理基于文本的屏幕--(五)
    SQL Server DT问与答
    ExtJS4.x treegrid 控件复选框的研究
    动态查找表之二叉排序树
    应届毕业生求职,注意事项
    windows编码约定
    JavaJDBC数据库开发
    Windows桌面应用开发字符串的使用
  • 原文地址:https://www.cnblogs.com/onlyRP/p/4740968.html
Copyright © 2020-2023  润新知