設g為有n個頂點的有向無環圖,g中各頂點的編號為1到n,且當為g中的一條邊時有i < j。設w(i,j)為邊的長度,請設計演算法,計算圖g中<1,n>間的最長路徑。
輸入格式:
輸入檔案longest.in的第一行有兩個整數n和m,表示有n個頂點和m條邊,接下來m行中每行輸入3個整數a,b,v(表示從a點到b點有條邊,邊的長度為v)。
輸出格式:
輸出檔案longest.out,乙個整數,即1到n之間的最長路徑.如果1到n之間沒連通,輸出-1。
輸入樣例#1:
2 11 2 1
輸出樣例#1:
1
20%的資料,n≤100,m≤1000
40%的資料,n≤1,000,m≤10000
100%的資料,n≤1,500,m≤50000,最長路徑不大於10^9
裸spfa
1 #include2 #include3 #include4 #include5 #include6using
namespace
std;
7const
int maxn=500001;8
struct
node
9edge[maxn];
15int num=1;16
inthead[maxn];
17void add(int x,int y,int
z)18
25int
dis[maxn];
26int
vis[maxn];
27int
n,m,s;
28void spfa(int
s)2950}
51}52}
53if(dis[n]==0
)54 printf("-1"
);55
else
56 printf("
%d "
,dis[n]); 57}
58int
main()
5970 spfa(1
);71
return0;
72 }
P1807 最長路 NOI導刊2010提高(07)
設g為有n個頂點的有向無環圖,g中各頂點的編號為1到n,且當為g中的一條邊時有i j。設w i,j 為邊的長度,請設計演算法,計算圖g中 1,n 間的最長路徑。輸入格式 輸入檔案longest.in的第一行有兩個整數n和m,表示有n個頂點和m條邊,接下來m行中每行輸入3個整數a,b,v 表示從a點到...
洛谷 P1807最長路
設g為有n個頂點的有向無環圖,g中各頂點的編號為1到n,且當為g中的一條邊時有i j。設w i,j 為邊的長度,請設計演算法,計算圖g中 1,n 間的最長路徑。輸入格式 輸入檔案longest.in的第一行有兩個整數n和m,表示有n個頂點和m條邊,接下來m行中每行輸入3個整數a,b,v 表示從a點到...
洛谷 P1807 最長路(拓撲排序)
題目大意 n個頂點的帶權有向無環圖,邊權可能為負值,求1到n的最長路,無法到達則輸出 1思路 拓撲排序,直接先將入度為0的入隊,定義dis陣列,先全部設定成乙個極小值,dis i 為i號頂點到1的距離,然後拓撲排序過程中更新dis,若最後dis n 仍為極小值輸出 1,否則輸出dis n inclu...