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

TOP

Ö±½Ó²î·ÖÔ¼ÊøÇó×î¶Ì·
2013-11-20 14:23:39 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:114´Î
Tags£ºÖ±½Ó ²î·Ö Ô¼Êø ¶Ì·
    ÁÙÐÐǰ×îºóÒ»Ì⣬¾ÓÈ»»¹²»¸øÎÒ1A.ÌâÒ⣬¸ø³öÒ»¶ÑB-A<=C,ÎÊ1ºÍNÕâÁ½È˵Ä×î´ó²îÖµ¡£ Ö±½Ó²î·ÖÔ¼ÊøÇó×î¶Ì·£¬¼´×î´óÖµ¼´¿É¡£ ³õÖµ½«1ÉèΪ0,ÄÇô×î´ó²îÖµ¾ÍÊÇdis[n],AC. µ«ÊÇÕâµÀÌâ¾ÓÈ»¿¨SPFA,Ì«ÉñÆæÁË¡£ È»ºóÒªDIJ+HEAP²Å¿ÉÒÔ¡£ ¿´ÁËDISCUSS˵£¬SPFA°Ñ¶ÓÁиijÉÕ»¾ÍÄܹý£¬ÕæÊÇÉñÆæ¡£
    01.#include <set>
    02.#include <map>
    03.#include <stack>
    04.#include <cmath>
    05.#include <queue>
    06.#include <cstdio>
    07.#include <string>
    08.#include <vector>
    09.#include <iomanip>
    10.#include <cstring>
    11.#include <iostream>
    12.#include <algorithm>
    13.#define Max 2505
    14.#define FI first
    15.#define SE second
    16.#define ll long long
    17.#define PI acos£¨-1.0£©
    18.#define inf 0x3fffffff
    19.#define LL£¨x£© £¨ x ¡¶ 1 £©
    20.#define bug puts£¨"here"£©
    21.#define PII pair<int,int>
    22.#define RR£¨x£© £¨ x ¡¶ 1 | 1 £©
    23.#define mp£¨a,b£© make_pair£¨a,b£©
    24.#define mem£¨a,b£© memset£¨a,b,sizeof£¨a£©£©
    25.#define REP£¨i,s,t£© for£¨ int i = £¨ s £© ; i <= £¨ t £© ; ++ i £©
    26.
    27.using namespace std;
    28.
    29.#define M 999999
    30.#define N 111111
    31.int n , m ;
    32.struct kdq {
    33.    int e , l , next ;
    34.} ed[M] ;
    35.int head[N] , num ;
    36.void init£¨£© {
    37.    mem£¨head ,-1£© ;
    38.    num = 0 ;
    39.}
    40.void add£¨int s ,int e ,int l£© {
    41.    ed[num].e = e ;
    42.    ed[num].l = l ;
    43.    ed[num].next = head[s] ;
    44.    head[s] = num ++ ;
    45.}
    46.int dis[N] , cnt[N] ;
    47.bool vis[N] ;
    48.queue<int>qe ;
    49.int spfa£¨£© {
    50.    while£¨£¡qe.empty£¨£©£©qe.pop£¨£© ;
    51.    for £¨int i = 0 ; i <= n ; i ++ £©dis[i] = inf ,cnt[i] = 0 ;
    52.    dis = 0 ;
    53.    mem£¨vis ,0£© ;
    54.    qe.push£¨1£© ;
    55.    vis = 1 ;
    56.    while£¨£¡qe.empty£¨£©£© {
    57.        int tp = qe.front£¨£© ;
    58.        qe.pop£¨£© ;
    59.        vis[tp] = 0 ;
    60.        if£¨cnt[tp] > n£©return -1 ;
    61.        for £¨int i = head[tp] ; ~i ; i = ed[i].next £© {
    62.            int e = ed[i].e ;
    63.            int l = ed[i].l ;
    64.            if£¨dis[e] > dis[tp] + l£© {
    65.                dis[e] = dis[tp] + l ;
    66.                if£¨£¡vis[e]£© {
    67.                    vis[e] = 1 ;
    68.                    qe.push£¨e£© ;
    69.                    cnt[e] ++ ;
    70.                }
    71.            }
    72.        }
    73.    }
    74.    return dis[n] - dis ;
    75.}
    76.
    77.struct DIJ {
    78.    int e , l ;
    79.    DIJ£¨£© {}
    80.    DIJ£¨int ee , int lx£©£ºe£¨ee£© , l£¨lx£© {}
    81.    bool operator < £¨const DIJ &fk £©const {
    82.        return l > fk.l ;
    83.    }
    84.} ;
    85.//queue<DIJ>q ;
    86.int dij£¨£© {
    87.    priority_queue<DIJ>q ;
    88.    for £¨int i = 1 ; i <= n ; i ++ £©dis[i] = inf ;
    89.    mem£¨vis ,0£© ;
    90.    dis = 0 ;
    91.    q.push£¨£¨DIJ£© {
    92.        1 , 0
    93.    }£© ;
    94.    while£¨£¡q.empty£¨£©£© {
    95.        DIJ tp = q.top£¨£© ;
    96.        q.pop£¨£© ;
    97.        if£¨vis[tp.e]£©continue ;
    98.        vis[tp.e] = 1 ;
    99.        for £¨int i = head[tp.e] ; ~i ; i = ed[i].next £© {
    100.            int e = ed[i].e ;
    101.            int l = ed[i].l ;
    102.            if£¨dis[e] > dis[tp.e] + l £© {
    103.                dis[e] = dis[tp.e] + l ;
    104.                q.push£¨DIJ£¨e , dis[e]£©£© ;
    105.            }
    106.        }
    107.    }
    108.    return dis[n] ;
    109.}
    110.int main£¨£© {
    111.    while£¨cin ¡· n ¡· m £© {
    112.        int a , b , c ;
    113.        init£¨£© ;
    114.        for £¨int i = 0 ; i < m ; i ++ £© {
    115.            scanf£¨"%d%d%d",&a,&b,&c£© ;
    116.            add£¨a , b , c£© ;
    117.        }
    118.        printf£¨"%d\n",dij£¨£©£© ;
    119.    }
    120.    return 0 ;
    121.}
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£º¿ìËÙÃݺÍÅ·À­º¯ÊýµÄÓÅ»¯Çó½â ÏÂһƪ£ºC++ÖÐʵÏÖ×î´ó»ØÎÄ×Ó´®

ÆÀÂÛ

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

¡¤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)