結果
| 問題 | No.1473 おでぶなおばけさん |
| コンテスト | |
| ユーザー |
Nachia
|
| 提出日時 | 2021-04-09 21:51:36 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,097 bytes |
| 記録 | |
| コンパイル時間 | 2,435 ms |
| コンパイル使用メモリ | 208,148 KB |
| 最終ジャッジ日時 | 2025-01-20 14:12:48 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 46 TLE * 1 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,n) for(int i=0; i<(n); i++)
struct DSU{
vector<int> V;
DSU(int n=0){ V.resize(n); rep(i,n) V[i]=i; }
int leader(int a){ return (V[a]==a)?a:(a=leader(V[a])); }
void merge(int u,int v){ V[leader(u)]=leader(v); }
};
struct Edge{ int u,v,w; };
bool compEdge_w(Edge l, Edge r){ return l.w>r.w; }
int N,M;
vector<Edge> edges;
vector<vector<int>> E;
DSU dsu;
vector<int> D;
int main(){
cin>>N>>M;
edges.resize(M);
rep(i,M){ int u,v,w; cin>>u>>v>>w; u--; v--; edges[i]={u,v,w}; }
sort(edges.begin(),edges.end(),compEdge_w);
E.resize(N);
dsu = DSU(N);
int W=1001001001;
for(Edge e:edges){
dsu.merge(e.u,e.v);
W = e.w;
if(dsu.leader(0) == dsu.leader(N-1)) break;
}
for(Edge e:edges) if(e.w>=W){
E[e.u].push_back(e.v);
E[e.v].push_back(e.u);
}
D.assign(N,-1);
queue<int> Q;
D[0]=0; Q.push(0);
while(Q.size()){
int p=Q.front(); Q.pop();
for(int e:E[p]) if(D[e]==-1){
D[e] = D[p]+1;
Q.push(e);
}
}
cout<<W<<" "<<D[N-1]<<"\n";
return 0;
}
Nachia