ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

¹ØÓÚ³¬¼¶Ô´µãºÍ³¬¼¶»ãµãÎÊÌâ
2013-12-05 13:05:22 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:91´Î
Tags£º¹ØÓÚ ³¬¼¶ ÎÊÌâ
    ÕâÖÖÌ⻹ÊÇÂù³£¼ûµÄ£¬SPFA+DPÓÅ»¯£¬¼ÇµÃÉϴα±´óУÈü¾ÍÓÐÒ»µÀ¡£
    ¸ù¾ÝÌâÒ⣬ÎÒÃÇ¿ÉÒÔÐéÄâÁ½¸ö³¬¼¶Ô´µãºÍ³¬¼¶»ãµã£¬Ô´µãµ½ËùÓеãµÄ¾àÀë¶¼ÊÇÕâ¶Î¾àÀë¼ÓÉϲι۵Äʱ¼ä¡£ËùÓе㵽»ãµãµÄ¾àÀë¾ÍÊǸõ㵽ÖÕµãµÄ¾àÀë¡£
    ÕâÑù¿ØÖÆÖ®ºó£¬¶ÔÓÚÖÕµã¾ÍÓÐ2¸öÑ¡ÔñÁË£¬Â·¹ý»òÕ߲ιۡ£
    ¶ÔÓÚ;ÖгýÆðµãÖÕµãÒÔÍâµÄµã£¬ÎÒÃÇ¿ÉÒÔÏȽøÐÐÒ»±éfloyd,È»ºó¸ù¾ÝËûÃǵÄvalÖµ½øÐÐÁ¬±ß£¬ÖµÊÇÁ½µãÖ®¼äµÄ¾àÀë¼ÓÉϲι۵Äʱ¼ä¡£ÕâÑù¶ÔÓÚÿһµãÆäʵҲÓÐÁ½¸öÑ¡ÔñÁË£¬¿ÉÒԲι۸õ㣬¼´a -> b,Ò²¿ÉÒÔ·¹ý¸Ãµã£¬¼´a -> b£¨Â·¹ý£¬floyd±£Ö¤ÁËÕâÒ»µã£© ->c.
    È»ºó´ÓÔ´µã¿ªÊ¼ÅÜÒ»±éspfa,×îºóÔÚÖÕµãºÍ³¬¼¶»ãµãÖ®¼äÕÒµ½Ò»¸ö×î´óÖµ£¬¾ÍÊǴ𰸡£
    ÕâµÀÌâÆÚ¼ä·¸ÁËÒ»¸öºÜ2µÄ´íÎó£¬ÎÒÒѾ­²»Äܶà˵ÁË¡£
    ÏÂÃæÊÇ´úÂ룺
    #include <set>
    #include <map>
    #include <stack>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <iomanip>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define Max 2505
    #define FI first
    #define SE second
    #define ll long long
    #define PI acos£¨-1.0£©
    #define inf 0x3fffffff
    #define LL£¨x£© £¨ x ¡¶ 1 £©
    #define bug puts£¨"here"£©
    #define PII pair<int,int>
    #define RR£¨x£© £¨ x ¡¶ 1 | 1 £©
    #define mp£¨a,b£© make_pair£¨a,b£©
    #define mem£¨a,b£© memset£¨a,b,sizeof£¨a£©£©
    #define REP£¨i,s,t£© for£¨ int i = £¨ s £© ; i <= £¨ t £© ; ++ i £©
    using namespace std;
    #define N 105
    #define M 20005
    #define K 305
    int tim[N] , val[N] ;
    int Map[N][N] ;
    int n , m , s , e , t ;
    struct kdq {
    int s , e, l ,next ;
    } ed[M] ;
    int head[N] , num ;
    void add£¨int s , int e ,int l£© {
    ed[num].e = e ;
    ed[num].l = l ;
    ed[num].next = head[s] ;
    head[s] = num ++ ;
    }
    int vis[N][K] ;
    int dp[N][K] ;// dp[i][j]±íʾµãiÔÚʱ¼äjµÄʱºòµÄ×î´óÖµ
    PII qe[N * 1000] ;
    void init£¨£© {
    mem£¨head ,-1 £© ;
    num = 0 ;
    mem£¨val ,0£© ;
    mem£¨tim ,0£© ;
    for £¨int i = 0 ; i < N ; i ++ £© {
    for £¨int j = 0 ; j < N ; j ++ £©
    Map[i][j] = inf ;
    Map[i][i] = 0 ;
    }
    cin ¡· n ¡· m ¡· t ¡· s ¡· e ;
    for £¨int i = 0 ; i < n ; i ++ £©scanf£¨"%d",&tim[i]£© ;
    for £¨int i = 0 ; i < n ; i ++ £©scanf£¨"%d",&val[i]£© ;
    while£¨m -- £© {
    int x , y , z ;
    scanf£¨"%d%d%d",&x,&y,&z£© ;
    Map[x][y] = Map[y][x] = min£¨Map[x][y] , z£© ;
    }
    for £¨int k = 0 ; k < n ; k ++ £©
    for £¨int i = 0 ; i < n ; i ++ £©
    for £¨int j = 0 ; j < n ; j ++ £©
    Map[i][j] = min£¨Map[i][j] , Map[i][k] + Map[k][j]£© ;
    for £¨int i = 0 ; i < n ; i ++ £© {
    for £¨int j = i + 1 ; j < n ; j ++ £© {
    if£¨Map[i][j] != inf£© {
    if£¨val[i] > val[j]£©//¸ù¾ÝËûµÄ¼ÛÖµÉýÐò½¨±ß
    add£¨j , i , Map[i][j] + tim[i]£© ;
    else if£¨val[j] > val[i]£©
    add£¨i , j , Map[i][j] + tim[j]£© ;
    }
    }
    }
    add£¨n , s , tim[s]£© ;//S -> i , i -> E . S = n ,E = n + 1 .
    for £¨int i = 0 ; i < n ; i ++ £© {
    if£¨i != s && Map[i][s] != inf£© {
    add£¨n , i , tim[i] + Map[s][i]£© ;
    }
    if£¨i != e && Map[i][e] != inf£© {
    add£¨i , n + 1 , Map[e][i]£© ;
    }
    }
    for £¨int i = 0 ; i < N ; i ++ £© {
    for £¨int j = 0 ; j < K ; j ++ £© {
    dp[i][j] = 0 ;
    vis[i][j] = 0 ;
    }
    }
    vis[n][0] = 1 ;
    int hh = 0 , tt = 0 ;
    qe[hh ++ ] = mp£¨n , 0£© ;
    while£¨hh > tt£© {
    PII tp = qe[tt ++ ] ;
    int fk1 = tp.FI ;
    int fk2 = tp.SE ;
    vis[fk1][fk2] = 0 ;
    for £¨int i = head[fk1] ; ~i ; i = ed[i].next £© {
    int nxt = ed[i].e ;
    int l = ed[i].l + fk2 ;
    if£¨l > t£©continue ;
    if£¨dp[nxt][l] < dp[fk1][fk2] + val[nxt]£© {
    dp[nxt][l] = dp[fk1][fk2] + val[nxt] ;
    if£¨£¡vis[nxt][l]£© {
    vis[nxt][l] = 0 ;
    qe[hh ++ ] = mp£¨nxt , l£© ;
    }
    }
    }
    }
    int ans = 0 ;
    for £¨int i = 0 ; i <= t ; i ++ £© {
    ans = max£¨ans , dp[e][i]£© ;
    ans = max£¨ans , dp[n + 1][i]£© ;
    }
    printf£¨"%d\n",ans£© ;
    }
    int main£¨£© {
    int T ;
    cin ¡· T ;
    for £¨int i = 1 ; i <= T ; i ++ £© {
    printf£¨"Case #%d:\n",i£© ;
    init£¨£© ;
    }
    return 0 ;
    }

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºÔÚÒ»ÕÅÓÐÏòͼÖÐÕÒ³ö×îС¾àÀë ÏÂһƪ£ºc++ primer×ܽáСµã

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)