題目大意:
給定乙個起點,求以其餘所有點分別為必經點的最短迴路之和。
思路:建立反向圖,在正反圖上分別跑一遍dijkstra,最後求和即可。
注意資料規模,要開long long不然會wa,只能拿25分。
1 #include2 #include3 #include4 #include5 inline intgetint()
12const
long
long inf=0x7fffffffffffffff;13
const
int v=1000001;14
struct
edge ;
18 std::vectore1[v],e2[v];
19 inline void add_edge(std::vector*e,const
int u,const
int v,const
long
long
w) );21}
22struct
vertex
28};
29int
n;30
long
long
dis1[v],dis2[v];
31 __gnu_pbds::priority_queue>q;
32 __gnu_pbds::priority_queue>::point_iterator p[v];
33const
int s=1
;34 inline void dijkstra(long
long *dis,std::vector*e) );38}
39while(q.top().dis!=inf) );45}
46}47q.modify(p[x],(vertex));48}
49}50int
main()
58dijkstra(dis1,e1);
59dijkstra(dis2,e2);
60long
long ans=0;61
for(register int i=2;i<=n;i++)
64 printf("
%lld\n
",ans);
65return0;
66 }
洛谷 P1342 請柬
這道題很適合作為p1629的加強版 因為這道題其實體現了反向建圖的高效性 反向建圖後 單終點最短路徑 單源最短路徑。因此兩邊dij,然後再累計和即可 部分不難弄。直接上 先說明以下程式,有1的變數名與第一次dij有關 學生出來 帶2的與第二次dij有關 學生回家 include include in...
洛谷P1342請柬
核心思想 兩遍最短路.1號點去各地的時間直接套最短路模板,各地到1號點時間用逆向思維,視為求1號點沿反邊到各地的時間即可.include include include include include define re register using namespace std const int ...
洛谷 P1342 請柬
在電視時代,沒有多少人 戲劇表演。malidinesia古董喜劇演員意識到這一事實,他們想宣傳劇院,尤其是古色古香的喜劇片。他們已經列印請帖和所有必要的資訊和計畫。許多學生被雇來分發這些請柬。每個學生志願者被指定乙個確切的公共汽車站,他或她將留在那裡一整天,邀請人們參與。這裡的公交系統是非常特殊的 ...