#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N = 510,INF = 0x3f3f3f3f;
int g[N][N],d[N],n,m,s,t,ans1 = INF,ans2 = INF;
bool vis[N];
vector<PII> st;
void Dijstra()
{
memset(d,0x3f,sizeof(d));
memset(vis,false,sizeof(vis));
d[s] = 0;
while(1){
int t = -1;
for(int i=1;i<=n;i++){
if(!vis[i]&&(t == -1||d[i] < d[t])) t = i;
}
if(!~t) break;
vis[t] = true;
for(int i=1;i<=n;i++){
if(g[t][i] + d[t] < d[i]){
d[i] = d[t] + g[t][i];
}
}
}
}
int main()
{
cin>>n>>m>>s>>t;
memset(g,0x3f,sizeof(g));
while(m --){
int a,b,c;
cin>>a>>b>>c;
g[a][b] = g[b][a] = c;
if(a == s||b == s) st.push_back({a,b});
}
Dijstra();
ans2 = d[t];
for(auto i : st)
{
int a = i.first,b = i.second;
int t = g[a][b];
g[a][b] = g[b][a] = INF;
Dijstra();
int t1 = (a != s)?a:b;
ans1 = min(ans1,d[t1] + t);
g[a][b] = g[b][a] = t;
}
if(ans1 == INF) ans1 = -1;
if(ans2 == INF) ans2 = -1;
cout<<ans1<<' '<<ans2<<endl;
if(ans1 < ans2&&ans1 != -1||ans2 == -1) cout<<"Win!";
else cout<<"Lose!";
return 0;
}
21Robocom国赛 7-4 猛犸不上 Ban
最新推荐文章于 2024-10-02 23:40:03 发布