愛與正義的火箭隊為了得到雪拉比,於是對它展開了捕捉計畫。當雪拉比受到傷害時,它會使用全部能力穿越到1小時之後的時間,並發出了sos的求救。
小梁在旅行的途中感受到了雪拉比的求救,她跟著雪拉比的求救,來到了一座遺跡,該遺跡的俯檢視可看為n\textn個傳送點,m\textm條道路所組成的雙向連通圖,每一條道路都有對應的長度di\text_idi。
通過心靈指引小梁終於救出了雪拉比。但是由於被火箭隊追趕,雪拉比只能隱藏自己的氣息。
火箭隊也發現了雪拉比和小梁的位置,同時小梁也在雪拉比的幫助下確定了火箭隊的位置。小梁想知道在她和火箭隊移動速度相同的條件下,為了順利的躲避火箭隊,並且雙方都以最短路徑向對方原始位置移動,有多少方案可以使得他們不相遇,並對方案數取模109+710^9+7109+7。
第一行輸入兩個整數n和m(1≤n≤100000,1≤m≤200000)第二行輸入兩個整數s和t(1≤s,t≤n,s≠t)分別表示小梁和火箭隊所在的位置
下面m行輸入三個整數 ui,vi,di表示第ui個點和第vi個點相連,他們的距離是di(1≤ui,vi≤n,1≤di≤10^9)
輸出所有符合條件的方案對10^9+7取模後的數。示例1
8 94 21 2 2
7 6 9
2 8 12
4 2 18
8 4 2
3 5 18
1 5 3
4 7 7
2 7 7
2
4和2之間的最短路為14,其中不會相遇的方案路線分別為:①t到s:2-8-4;s到t:4-7-2
②t到s:2-7-4;s到t:4-8-2
思路:用dijkstra演算法求解出,每個點到s的距離 da[0][i] 和到t的距離 da[1][i] ,以及相應的最短路線數 su[0][i] 和 su[1][i] 。分析可知需要知道s到t的最短路徑,以及路徑數cnt=da[0][t]。
如果不考慮相遇則方案數為 sum=cnt*cnt 。
相遇的話則有兩種情況:
1.在某一點相遇。方案數為 g=su[0][i]*su[1][i]*su[0][i]*su[1][i] 。
2.在路徑上相遇。方案數為 h=su[0][u]*su[1][v]*su[0][u]*su[1][v] 。
最終結果為 sum-g-h 。
ac示例**#include //超時
#include #include #include #include #include #include #include #include #include #include #define cla(a, sum) memset(a, sum, sizeof(a))
#define rap(i, m, n) for(int i=m; i<=n; i++)
#define rep(i, m, n) for(int i=m; i>=n; i--)
#define bug printf("???\n")
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pairp;
const ll inf = 1e17;
const double eps = 1e-8;
const int maxn = 1e5+5;
const ll mod=1e9+7;
template void read(t &x)
while (isdigit(ch))
x *= f;
}int n,m;
int s,t;
int a[maxn],cnt;
struct nodef[4*maxn];
int vis[2][maxn]=;
ll da[2][maxn],su[2][maxn];
ll sum;
void init()
cnt=0;
}void add(int u,int v,ll d)
void dijk(int x,ll d,int ok,ll sa)
else if(d[c]==d[u]+f[i].d )
} } }
int main()
dijk(s,da[0],vis[0],su[0]);
dijk(t,da[1],vis[1],su[1]);
sum=su[0][t]*su[1][s]%mod;
// cout
rap(i,1,n)
for(int k=a[i];k!=-1;k=f[k].next )
} }cout
}
牛客網 bfs 逃脫 切比雪夫距離
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 題目描述 這是mengxiang000和tabris來到幼兒園的第四天,幼兒園老師在值班的時候突然發現幼兒園某處發生火災,而且火勢蔓延極快,老師在第一時間就發出了警報,...
高斯型求積公式 勒讓德 拉蓋爾 切比雪夫
gauss型求積公式 若機械求積公式具有階代數精度,則稱為gauss型求積公式,而在上關於權函式的次正交多項式的零點就是gauss型求積公式的gauss點。在gauss型求積公式中,若權函式,區間為,則公式為 特別的稱為gauss legendre公式。下表列出gauss legendre公式的結點...
小A與尤拉路(牛客 樹的直徑)
題解 尤拉路 從圖中任意乙個點開始到圖中任意乙個點結束的路徑,並且圖中每條邊只通過恰好一次 問你走完這樹上所有的點最短路徑是什麼。因為樹是沒有環的,所以你走到葉子結點的時候需要往回走,也就是再走一遍剛剛走過的路。所以我們確定一條主道路,遇到分支就走一遍 主道路是不需要走兩遍的 因為所有長度都是已知的...