QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#781594 | #7883. Takeout Delivering | pcc1 | WA | 1ms | 9720kb | C++14 | 1.6kb | 2024-11-25 16:35:24 | 2024-11-25 16:35:24 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define int long long
using namespace std;
const int N=1e6+10;
int n,m;
struct node{
int u,v,w;
}a[N];
struct Node{
int fr,to,nxt,w;
}e[N*2];
int f[N],tot,head[N];
void add(int a,int b,int w){
e[++tot].nxt=head[a];
head[a]=tot;
e[tot].to=b;
e[tot].w=w;
e[tot].fr=a;
}
int find(int x){
if(f[x]==x)return x;
return f[x]=find(f[x]);
}
int dis1[N],dis2[N];
void dfs(int u,int fa){
for(int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(v==fa)continue;
dis1[v]=max(dis1[u],e[i].w);
dfs(v,u);
}
}
bool cmp(node a,node b){
return a.w<b.w;
}
signed main(){
int ans=2e18;
cin>>n>>m;
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int u,v,w,i=1;i<=m;i++){
cin>>a[i].u>>a[i].v>>a[i].w;
if(a[i].u==1&&a[i].v==n){
ans=min(ans,a[i].w);
}
if(a[i].u==n&&a[i].v==1){
ans=min(ans,a[i].w);
}
}
sort(a+1,a+m+1,cmp);
// for(int i=1;i<=m;i++){
// cout<<a[i].u<<" "<<a[i].v<<":\n";
// }
for(int i=1;i<=m;i++){
int x=find(a[i].u);int y=find(a[i].v);
if(x!=y){
f[x]=y;
add(a[i].u,a[i].v,a[i].w);
add(a[i].v,a[i].u,a[i].w);
}
// add(a[i].u,a[i].v);add(a[i].v,a[i].u);
}
dfs(1,0);
for(int i=1;i<=n;i++){
dis2[i]=dis1[i];
}
// for(int i=1;i<=n;i++){
// cout<<dis2[i]<<" ";
// }
// cout<<"\n";
dfs(n,0);
for(int i=1;i<=m;i++){
if(dis1[e[i].fr]<=e[i].w&&dis2[e[i].to]<=e[i].w)ans=min(ans,max(dis1[e[i].fr],dis2[e[i].to])+e[i].w);
if(dis2[e[i].fr]<=e[i].w&&dis1[e[i].to]<=e[i].w)ans=min(ans,max(dis1[e[i].to],dis2[e[i].fr])+e[i].w);
}
cout<<ans<<"\n";
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 9720kb
input:
4 6 1 2 2 1 3 4 1 4 7 2 3 1 2 4 3 3 4 9
output:
6
result:
wrong answer 1st numbers differ - expected: '5', found: '6'