結果

問題 No.1473 おでぶなおばけさん
ユーザー s
提出日時 2025-10-15 12:14:48
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 2,098 bytes
コンパイル時間 4,424 ms
コンパイル使用メモリ 258,668 KB
実行使用メモリ 10,860 KB
最終ジャッジ日時 2025-10-15 12:15:02
合計ジャッジ時間 12,925 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 10 WA * 37
権限があれば一括ダウンロードができます

ソースコード

diff #

#define _USE_MATH_DEFINES
#include  <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
#include<math.h>
#include<iomanip>
#include<stdio.h>
#include <stdlib.h>
#include<stdio.h>
#include <queue>
#include<map>
#include <fstream>
#include <sstream>
#include<set>
#include<stack>
#include<time.h>
#include <sys/types.h>
#include <tuple>
#include <numeric>
#include <iterator>
#include <atcoder/all>
#include <bits/stdc++.h>

#define rep(i,n) for (int i = 0; i < (n); ++i)
using namespace atcoder;
using namespace std;
typedef long long int ll;
typedef modint998244353 mint;




ll gcd(ll a, ll b) {
    if (a < b)swap(a, b);
    if (b == 0)return a;

    return gcd(b, a % b);
}
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

/*
解説動画参考
解説ブログ参考

*/
int INF = 1000111000;

ll f(vector<vector<pair<int, int>>>&p, ll s, ll n, ll d) {
    vector<ll>r(p.size(), INF);
    queue<int>q;
    r[s] = 0; q.push(s);
    while (q.size()) {
        int t = q.front(); q.pop();
        for (int i = 0; i < p[t].size(); i++) {
            if (r[p[t][i].first] == INF) {
                if (p[t][i].second >= d) {
                    r[p[t][i].first] = r[t] + 1;
                    q.push(p[t][i].first);
                }
            }
        }

    }
    return r[n];
}


int main()
{

   
    int Q;
    Q = 1;
    //cin >> Q;   
    

    
    while (Q--) {
        ll  n, m;
        cin >> n >> m;
        vector<int>r(n + 3);
        vector<vector<pair<int, int>>>p(n+3);
        for (int i = 0; i < m; i++) {
            int a, b,d;
            cin >> a >> b>>d;
            a--; b--;
            p[a].emplace_back(b, d);
            p[b].emplace_back(b, a);
        }
        ll S = 1, D = 1e9+1;
        while (abs(D - S) > 1) {
            ll mid = (D + S) / 2;
            ll t = f(p, 0, n-1, mid);
            if (t < INF) {
                S = mid;
            }
            else D = mid;
            //cout <<t<<" "<< S<<" "<<D << endl;
        }
        cout << S << " " << f(p, 0, n-1, S);
    }

    return 0;
}
0