第一題:2019暑假牛客第4場j-free:
官方題解:
}第二題:杭電多校hdu6181:題目傳送門
ac code:
#include
// #include
// #include
// #include
// #include
using namespace std;
#define per(i,a,b) for(int i = (a);i <= (b);++i)
#define rep(i,a,b) for(int i = (a);i >= (b);--i)
const
int maxn =
2e5+10;
typedef
long
long ll;
#define inf 1e18
int n =
0,m =0;
int cnt =
0,head[maxn]
;ll d1[maxn]
,d2[maxn]
;bool vis[maxn]
;struct edge
edge()
edge
(int to1,ll w1,
int nex1)};
edge e[maxn]
;void
init()
}void
add_edge
(int from,
int to,ll w)
void
dijikstra
(int s)
for(
int i = head[u.to]
;i !=-1
;i = e[i]
.nex));
}if(d2[ed.to]
> way && d1[ed.to]
< way));
}}}printf
("%lld\n"
,d2[n]);
}int
main()
dijikstra(1
);}return0;
}
也是a*模板題:
#include
#define per(i,a,b) for(int i = (a);i <= (b);++i)
#define rep(i,a,b) for(int i = (a);i >= (b);--i)
#define inf 1e18
using namespace std;
typedef
long
long ll;
const
int maxn =
1e5+10;
int n =
0,m =0;
ll d[maxn]
;int head[maxn]
;int cnt =0;
bool vis[maxn]
;struct node};
struct edgee[
2*maxn]
;//需要兩倍的空間,每一次是有向邊
void
init()
}void
add_edge
(int from,
int to,ll w)
void
dijikstra
(int s));
while
(!pq.
empty()
) vis[u.v]
= true;
for(
int i = head[u.v]
;i !=-1
;i = e[i]
.nex));
}}}}
ll a_start
(int s,
int k));
while
(!pq.
empty()
)else
}for
(int i = head[u.v]
;i !=-1
;i = e[i]
.nex));
//記錄從原點到該點的距離,比較時使用的是期望函式大小,還要+d[ed.to]}}
return-1
;}intmain()
dijikstra
(n);
// per(i,1,n)
// puts("");
printf
("%lld\n"
,a_start(1
,2))
;}return0;
}
洛谷 3905 最短路,dijikstra
題目鏈結 c4選拔賽的最後一題,好氣啊,如果放在前面我就寫出來了。下次一定不要再無謂的卡題了。這題就是dijk,如果路沒被炸就視為0,炸了就看作有長度。還是好氣啊。include include define inf 0x3f3f3f3f using namespace std int map 10...
單源最短路徑 dijikstra
p4779 模板 單源最短路徑 標準版 適用於不含負權值路徑的圖 include include include include using namespace std define maxn 100005 define maxm 500005 define inf 2147483647 int n...
HDU 2544最短路 dijikstra演算法
輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n表示成都的大街上有幾個路口,標號為1的路口是商店所在地,標號為n的路口是賽場所在地,m則表示在成都有幾條路。n m 0表示輸入結束。接下來m行,每行包括3個整數a,b,c 1 a,b n,1 c 1000 表示在路口a與...