SPOJ——HIGHWAYS

Problem

A number of cities are connected by a network of highways. Each highway is bidirectional and connects two cities, with a given travel time. What is the shortest time to get from a given city to another given city?

Input

The first line of input contains the number of test cases.
Each test case starts with a line containing the number of cities n (2 ≤ n ≤ 100000), the number of highways m (1 ≤ m ≤ 100000), the starting city and the ending city. Cities are numbered from 1 to n.
Then m lines follow, each describing one highway. The description consists of the two distinct city numbers and the time in minutes to travel along the highway. The time will be between 1 and 1000.

Output

For each test case output a single line containing the minimum time it takes to get from the start to the destination. If no connection exists, output NONE.

Sample Input

2
4 2 1 4
1 2 5
3 4 5
4 4 1 4
1 2 5
2 3 5
3 4 5
4 2 6

Sample Output

NONE
11


思路

最短路模板題,dijkstra+priority_queue即可。不過注意使用priority_queue的時候加上greater參數毒坛,否則小根堆變大根堆弟晚,復雜度直接退化為O(n2)怠堪,一開始幾發(fā)TLE就是這個問題。

代碼

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
#include<functional>
#define N 100005
using namespace std;
typedef pair<int, int> P;
struct edge {
    int to, cost;
    edge(int t, int c) :to(t), cost(c) {};
};
int V,E,start,endd;
vector<edge>G[N];
int d[N];
void dijkstra(int s) {
    priority_queue<P, vector<P>,greater<P>>q;
    memset(d, 0x3f, sizeof(d));
    d[s] = 0;
    q.push(P(0, s));
    while (!q.empty()) {
        P p = q.top(); q.pop();
        int v = p.second;
        if (d[v] < p.first)continue;
        for (size_t i = 0; i < G[v].size(); i++) {
            edge e = G[v][i];
            if (d[e.to] > d[v] + e.cost) {
                d[e.to] = d[v] + e.cost;
                q.push(P(d[e.to], e.to));
            }
        }
    }
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin >> t;
    while (t--) {
        for (int i = 0; i < N; i++)G[i].clear();
        int v1, v2, w;
        cin >> V >> E >> start >> endd;
        for (int i = 0; i < E; i++) {
            cin >> v1 >> v2 >> w;
            G[v1].push_back(edge(v2, w));
            G[v2].push_back(edge(v1, w));
        }
        dijkstra(start);
        if (d[endd] > 1000000)cout << "NONE" << endl;
        else cout << d[endd] << endl;
    }
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末肥荔,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子速种,更是在濱河造成了極大的恐慌,老刑警劉巖脯颜,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哟旗,死亡現場離奇詭異贩据,居然都是意外死亡栋操,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門饱亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矾芙,“玉大人,你說我怎么就攤上這事近上√尴埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵壹无,是天一觀的道長葱绒。 經常有香客問我,道長斗锭,這世上最難降的妖魔是什么地淀? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮岖是,結果婚禮上帮毁,老公的妹妹穿的比我還像新娘。我一直安慰自己豺撑,他們只是感情好烈疚,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著聪轿,像睡著了一般爷肝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天阶剑,我揣著相機與錄音跃巡,去河邊找鬼。 笑死牧愁,一個胖子當著我的面吹牛素邪,可吹牛的內容都是我干的。 我是一名探鬼主播猪半,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼兔朦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了磨确?” 一聲冷哼從身側響起沽甥,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乏奥,沒想到半個月后摆舟,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡邓了,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年恨诱,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骗炉。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡照宝,死狀恐怖,靈堂內的尸體忽然破棺而出句葵,到底是詐尸還是另有隱情厕鹃,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布乍丈,位于F島的核電站剂碴,受9級特大地震影響,放射性物質發(fā)生泄漏轻专。R本人自食惡果不足惜忆矛,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铭若。 院中可真熱鬧洪碳,春花似錦、人聲如沸叼屠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镜雨。三九已至嫂侍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挑宠。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工菲盾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人各淀。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓懒鉴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碎浇。 傳聞我的和親對象是個殘疾皇子临谱,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,389評論 0 23
  • 有感 零星花幾葉,最惱是秋聲奴璃。 偏向離人落悉默,蕭蕭滿別情。
    巫小皇閱讀 306評論 0 1
  • 一 十三年前苟穆,小男孩江小蝦與小女孩善若水為同班同學抄课,一起在“荷花縣”讀小學六年級。那時候的班主任老師名叫柳中庭雳旅,4...
    有狐在沔閱讀 671評論 0 7
  • 你如星辰跟磨,只可仰望。 時間沒能磨滅我的癡心與妄想岭辣, 只是不再明目張膽的狂熱追逐吱晒。 你是我甸饱,深埋于心的信仰沦童。
    生生1993閱讀 148評論 0 0