青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

pku 1203 Timetable 拆點+DP最短路

題意:
Timetable
Time Limit: 3000MS  Memory Limit: 65536K
Total Submissions: 281  Accepted: 86

Description

You are the owner of a railway system between n cities, numbered by integers from 1 to n. Each train travels from the start station to the end station according to a very specific timetable (always on time), not stopping anywhere between. On each station a departure timetable is available. Unfortunately each timetable contains only direct connections. A passenger that wants to travel from city p to city q is not limited to direct connections however -- he or she can change trains. Each change takes zero time, but a passenger cannot change from one train to the other if it departs before the first one arrives. People would like to have a timetable of all optimal connections. A connection departing from city p at A o'clock and arriving in city q at B o'clock is called optimal if there is no connection that begins in p not sooner than at A and ends in q not later than at B. We are only interested in connections that can be completed during same day.
Write a program that:
reads the number n and departure timetable for each of n cities from the standard input,
creates a timetable of optimal connections from city 1 to city n,
writes the answer to the standard output.
Input

The first line of the input contains an integer n (2 <= n <= 100000). The following lines contain n timetables for cities 1, 2, ..., n respectively.

The first line of the timetable description contains only one integer m. Each of the following m lines corresponds to one position in the timetable and contains: departure time A, arrival time B (A < B) and destination city number t (1 <= t <= n) separated by single spaces. Departure time A and arrival time B are written in format hh:mm, where hh are two digits representing full hours (00 <= hh <= 23) and mm are two digits representing minutes (00 <= mm <= 59). Positions in the timetable are given in non-decreasing order according to the departure times. The number of all positions in all timetables does not exceed 1000000.

Output

The first line of the output contains an integer r -- the number of positions in the timetable being the solution. Each of the following r lines contains a departure time A and an arrival time B separated by single space. The time format should be like in the input and positions in the timetable should be ordered increasingly according to the departure times. If there is more then one optimal connection with the same departure and arrival time, your program should output just one.
Sample Input

3
3
09:00 15:00 3
10:00 12:00 2
11:00 20:00 3
2
11:30 13:00 3
12:30 14:00 3
0
Sample Output

2
10:00 14:00
11:00 20:00
Hint

Huge input data, use scanf instead of cin to avoid time limit exceed.
Source

Southwestern Europe 2002

代碼:

  1Source Code
  2
  3Problem: 1203  User: yzhw 
  4Memory: 36324K  Time: 1485MS 
  5Language: G++  Result: Accepted 
  6
  7Source Code 
  8# include <cstdio>
  9# include <set>
 10# include <vector>
 11# include <cstring>
 12# include <iostream>
 13# include <algorithm>
 14using namespace std;
 15struct node
 16{
 17    char s[10],e[10];
 18    int nxt;
 19}
;
 20int n,m;
 21vector<node> data[100001];
 22vector<int> l[100001];
 23int s[100001];
 24int g[1000005],nxt[2000005],v[2000005],co=0,dp[1000005];
 25int change(char *ori)
 26{
 27    char tmp[10];
 28    strcpy(tmp,ori);
 29    return atoi(strtok(tmp,":"))*60+atoi(strtok(NULL,":"));
 30}

 31void addedge(int s,int e)
 32{
 33    v[co]=e;
 34    nxt[co]=g[s];
 35    g[s]=co++;
 36}

 37int solve(int pos)
 38{
 39    if(dp[pos]!=-1return dp[pos];
 40    else if(g[pos]==-1&&pos>=s[n-1]) return dp[pos]=l[n][pos-s[n-1]];
 41    else
 42    {
 43        dp[pos]=(pos>=s[n-1]?l[n][pos-s[n-1]]:0xfffffff);
 44        for(int p=g[pos];p!=-1;p=nxt[p])
 45            dp[pos]=min(dp[pos],solve(v[p]));
 46        return dp[pos];
 47        
 48    }

 49}

 50void print(int time)
 51{
 52    printf("%s%d:%s%d",time/60<10?"0":"",time/60,time%60<10?"0":"",time%60);
 53}

 54int main()
 55{
 56  //  freopen("in11","r",stdin);
 57  //  freopen("ans.txt","w",stdout);
 58    scanf("%d",&n);
 59    s[0]=0;
 60    for(int i=1;i<=n;i++)
 61    {
 62        scanf("%d",&m);
 63        while(m--)
 64        {
 65            node tmp;
 66            scanf("%s%s%d",tmp.s,tmp.e,&tmp.nxt);
 67            data[i].push_back(tmp);
 68            l[i].push_back(change(tmp.s));
 69            if(tmp.nxt==n) l[n].push_back(change(tmp.e));
 70        }

 71        sort(l[i].begin(),l[i].end());
 72        vector<int>::iterator end=unique(l[i].begin(),l[i].end());
 73        while(l[i].end()!=end) l[i].pop_back();
 74        s[i]=s[i-1]+l[i].size();
 75    }

 76    memset(g,-1,sizeof(g));
 77    memset(dp,-1,sizeof(dp));
 78    co=0;
 79    for(int i=1;i<=n;i++)
 80    {
 81        for(int j=s[i-1];j<s[i]-1;j++)
 82             addedge(j,j+1);
 83        for(int j=0;j<data[i].size();j++)
 84            if(lower_bound(l[data[i][j].nxt].begin(),l[data[i][j].nxt].end(),change(data[i][j].e))!=l[data[i][j].nxt].end())
 85                addedge(s[i-1]+lower_bound(l[i].begin(),l[i].end(),change(data[i][j].s))-l[i].begin(),s[data[i][j].nxt-1]+lower_bound(l[data[i][j].nxt].begin(),l[data[i][j].nxt].end(),change(data[i][j].e))-l[data[i][j].nxt].begin());
 86
 87    }

 88    vector<pair<int,int> >ans;
 89    for(int i=s[1]-1;i>=0;i--)
 90        if(solve(i)!=0xfffffff&&(ans.empty()||solve(i)<ans.back().second))
 91            ans.push_back(make_pair(l[1][i],solve(i)));
 92    printf("%d\n",ans.size());
 93    for(int i=ans.size()-1;i>=0;i--)
 94    {
 95        print(ans[i].first);
 96        printf(" ");
 97        print(ans[i].second);
 98        printf("\n");
 99    }

100//    system("pause");
101    return 0;
102    
103}

104
105

posted on 2010-12-09 21:25 yzhw 閱讀(475) 評論(0)  編輯 收藏 引用 所屬分類: DP 、graph

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美在线播放| 久久精品国产99国产精品澳门| 亚洲精品国偷自产在线99热| 国产一区二区主播在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美一区二区三区男人的天堂| 亚洲精品久久久蜜桃| 亚洲第一黄色| 99视频日韩| 久久国产精品第一页| 久久亚洲电影| 欧美a级一区二区| 亚洲精品一区二区三区不| 亚洲精品自在久久| 亚洲欧美精品suv| 久久精品人人爽| 欧美伦理在线观看| 国产精品男gay被猛男狂揉视频| 国产精品视频精品视频| 亚洲第一天堂无码专区| 在线一区免费观看| 免费成人av资源网| 亚洲午夜激情网页| 欧美电影电视剧在线观看| 国产日韩专区在线| 在线中文字幕日韩| 欧美福利视频在线| 久久精品国产一区二区三| 欧美视频不卡| 久久噜噜噜精品国产亚洲综合| 欧美岛国激情| 亚洲观看高清完整版在线观看| 亚洲视频视频在线| 99国产精品久久久久久久| 麻豆成人在线观看| 狠狠色综合色区| 午夜精品区一区二区三| 亚洲精品视频在线看| 久久午夜精品一区二区| 一区免费在线| 亚洲一区国产| 亚洲高清在线观看一区| 久久精品国产久精国产爱| 欧美日韩精品系列| 日韩亚洲欧美综合| 亚洲国产美女久久久久| 欧美成人午夜免费视在线看片| 黄色成人在线观看| 欧美国产激情| 欧美日韩精品欧美日韩精品一| 亚洲啪啪91| 一本一本久久a久久精品综合麻豆| 男女视频一区二区| 亚洲午夜一区二区| 久久精品30| 亚洲精选视频免费看| 日韩网站在线观看| 国产美女精品一区二区三区| 久久久久综合| 免费黄网站欧美| 午夜亚洲影视| 欧美二区视频| 久久不射中文字幕| 麻豆久久久9性大片| 欧美视频一区二| 久久丁香综合五月国产三级网站| 久久影视精品| 亚洲欧美日韩爽爽影院| 久久精品亚洲热| 久久国产精品网站| 美女主播视频一区| 欧美亚洲自偷自偷| 欧美jizzhd精品欧美巨大免费| 欧美一区二区高清| 欧美日韩视频第一区| 免费观看久久久4p| 国产九九视频一区二区三区| 亚洲美女色禁图| av成人黄色| 欧美日韩中文另类| 日韩亚洲视频| 久久夜色精品国产欧美乱| 久久精品国产亚洲高清剧情介绍| 国产精品毛片在线| 亚洲永久在线观看| 久久久久成人精品免费播放动漫| 欧美体内谢she精2性欧美| 亚洲人成7777| 性欧美精品高清| 好吊色欧美一区二区三区四区| 久久精品国产久精国产思思| 欧美黑人在线播放| 亚洲色在线视频| 国产午夜精品福利| 免费成人在线视频网站| 亚洲一区二区在线观看视频| 老牛国产精品一区的观看方式| 在线观看日韩专区| 国产精品福利网| 美女主播一区| 午夜精品99久久免费| 亚洲激情在线观看| 欧美日韩免费在线观看| 久久综合伊人77777蜜臀| 中文欧美日韩| 亚洲日本成人| 欧美激情成人在线视频| 午夜欧美大片免费观看| 在线视频精品一区| 亚洲日本成人在线观看| 亚洲第一区在线观看| 在线观看日韩av| 国产欧美精品一区二区色综合| 欧美不卡在线视频| 免费视频最近日韩| 久久视频在线看| 久久亚洲欧美| 免费观看在线综合色| 欧美另类久久久品| 欧美视频二区36p| 欧美三级欧美一级| 欧美香蕉大胸在线视频观看| 欧美激情亚洲| 欧美日韩不卡| 国产精品视频yy9299一区| 国产婷婷色一区二区三区在线 | 亚洲女与黑人做爰| 亚洲欧美国产日韩天堂区| 亚洲免费视频成人| 久久天堂国产精品| 欧美日韩视频在线观看一区二区三区 | 久久精品国产在热久久 | 欧美精品久久一区| 欧美日韩国产探花| 国产情人节一区| 亚洲国产精品成人综合色在线婷婷 | 欧美mv日韩mv国产网站| 亚洲人成高清| 午夜精品久久久久久99热| 久久久久久久一区| 国产精品无码永久免费888| 激情婷婷欧美| 亚洲欧美日韩在线不卡| 欧美日韩一区二区三区四区在线观看| 久久一二三四| 国产欧美一区二区三区在线看蜜臀| 亚洲东热激情| 久久成人精品| 亚洲天堂网在线观看| 欧美精品观看| 亚洲激情精品| 免费成人av资源网| 麻豆av福利av久久av| 亚洲欧美国产精品专区久久| 久久夜色精品国产欧美乱极品| 欧美日韩精品一区视频| 亚洲精品视频在线播放| 亚洲成人在线视频播放 | 欧美一区三区三区高中清蜜桃| 亚洲国产一区二区三区在线播| 久久综合网络一区二区| 精品51国产黑色丝袜高跟鞋| 久久久噜久噜久久综合| 久久久亚洲国产天美传媒修理工| 在线播放日韩| 亚洲精品在线观| 欧美性色综合| 久久久www成人免费无遮挡大片| 久久九九全国免费精品观看| 亚洲欧美日韩精品久久久| 欧美精品在线免费| 亚洲综合日韩| 久久久久久欧美| 亚洲视频中文字幕| 久久成人免费网| 亚洲精品综合久久中文字幕| 在线综合亚洲欧美在线视频| 国产精品一区二区久激情瑜伽| 欧美一区二区三区精品电影| 麻豆精品一区二区av白丝在线| 亚洲欧美一区二区三区久久| 欧美大片第1页| 久久久久久亚洲综合影院红桃| 欧美日韩dvd在线观看| 久久成人资源| 欧美性做爰猛烈叫床潮| 亚洲国产欧美日韩| 国一区二区在线观看| 一本色道久久综合亚洲二区三区| 亚洲国产另类精品专区 | 麻豆精品在线播放| 国产精品影视天天线| 亚洲人被黑人高潮完整版| 亚洲精品一区在线| 久热国产精品| 欧美大片在线看免费观看| 精品成人一区二区| 蜜桃av一区二区三区| 欧美大片免费| 亚洲伦伦在线|