zoukankan      html  css  js  c++  java
  • 最短路 1333: Funny Car Racing

    ce了这么多次居然都没发现交错语言了    嗷嗷啊~~!@#¥%……&*

    【题意】给一张有向图 求从s点出发到t点话费的最少时间  每段路都有一个开放的时间和一个关闭是时间

    只要在走那一段路的时候 判断一下要等待多长时间   就行了

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<vector>
     5 #include<math.h>
     6 #include<string>
     7 #include<queue>
     8 #define maxx 100000000
     9 
    10 using namespace std;
    11 struct node{int t;int a;int b;int w;};
    12 vector<node > g[1002];
    13 bool vis[1002];
    14 int d[1002],n;
    15 queue<int > q;
    16 int spfa(int s,int ans)
    17 {
    18 
    19     memset(vis,false,sizeof(vis));q.push(s); vis[s]=true;
    20     for(int i=0;i<=n;i++)
    21         d[i]=maxx;
    22     d[s]=0;
    23     while(!q.empty())
    24     {
    25         int u;
    26         u=q.front();  q.pop();vis[u]=false;
    27         for(int i=0;i<g[u].size();i++)
    28         {
    29             int v,time;
    30             v=g[u][i].t; time=g[u][i].w;
    31 
    32             int t=d[u]%(g[u][i].a+g[u][i].b);
    33             int temp=0;
    34             if(t<=g[u][i].a)
    35             {
    36                 int tt;
    37                 tt=t+time;
    38                 if(tt<=g[u][i].a)
    39                     temp=0;
    40                 else
    41                 {
    42                     temp=g[u][i].a+g[u][i].b-t;
    43                 }
    44             }
    45             else
    46             {
    47                 temp=g[u][i].a+g[u][i].b-t;
    48             }
    49             if(d[u]+temp+time<d[v])
    50             {
    51                 d[v]=d[u]+temp+time;
    52                 if(!vis[v])
    53                 {
    54                     q.push(v);
    55                     vis[v]=true;
    56                 }
    57             }
    58         }
    59     }
    60     return d[ans];
    61 }
    62 
    63 int main()
    64 {
    65     int m,s,t,e,w,a,b,p=1,start,final1;
    66     while(scanf("%d%d%d%d",&n,&m,&start,&final1)>0)
    67     {
    68         for(int i=0;i<=n;i++)
    69             g[i].clear();
    70         for(int i=0;i<m;i++)
    71         {
    72             scanf("%d%d",&a,&b);
    73             scanf("%d%d%d",&s,&e,&w);
    74             if(s<w)
    75                 continue;
    76             node temp;
    77             temp.t=b;   temp.a=s;  temp.b=e;  temp.w=w;
    78             g[a].push_back(temp);
    79         }
    80         printf("Case %d: %d
    ",p++,spfa(start,final1));
    81     }
    82     return 0;
    83 }
  • 相关阅读:
    Android调用WebService
    webKit和chromium的文章地址
    关注web前端
    第三次面向对象程序设计作业
    第二次面向对象程序设计作业
    面向对象程序作业一
    HashMap的存储原理
    关于MySql中使用IFNULL()函数失效的问题。
    利用反射操作bean的属性和方法
    几种String对象方法的区别
  • 原文地址:https://www.cnblogs.com/assult/p/3607185.html
Copyright © 2011-2022 走看看