結果

問題 No.3482 Quod Erat Demonstrandum
コンテスト
ユーザー GOTKAKO
提出日時 2026-03-27 21:25:12
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 152 ms / 2,000 ms
コード長 1,546 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,307 ms
コンパイル使用メモリ 221,928 KB
実行使用メモリ 17,484 KB
最終ジャッジ日時 2026-03-27 21:25:34
合計ジャッジ時間 13,129 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 45
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

vector<int> BFS(vector<vector<int>> &Graph,int start){
    int N = Graph.size();
    vector<int> ret(N,-1);
    queue<int> Q;
    ret.at(start) = 0,Q.push(start);
    while(Q.size()){
        int pos = Q.front(); Q.pop();
        for(auto to : Graph.at(pos)){
            if(ret.at(to) != -1) continue;
            ret.at(to) = ret.at(pos)+1;
            Q.push(to);
        }
    }
    return ret;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int T; cin >> T;
    while(T--){
        int N,M; cin >> N >> M;
        vector<vector<int>> Graph(N);
        vector<pair<int,int>> diff;
        for(int i=0; i<M; i++){
            int u,v; cin >> u >> v;
            u--; v--;
            int w; cin >> w;
            if(w == 2){diff.push_back({u,v}); continue;}
            Graph.at(u).push_back(v);
            Graph.at(v).push_back(u);
        }
        auto dist1 = BFS(Graph,0),dist2 = BFS(Graph,N-1);
        if(dist1.at(N-1) != -1) cout << "Same\n" << dist1.at(N-1) << "\n";
        else{
            int answer = 1001001001;
            for(auto [u,v] : diff){
                if(dist1.at(u) != -1 && dist2.at(v) != -1) answer = min(answer,dist1.at(u)+dist2.at(v)+1);
                swap(u,v);
                if(dist1.at(u) != -1 && dist2.at(v) != -1) answer = min(answer,dist1.at(u)+dist2.at(v)+1);
                
            }

            if(answer > 1e9) cout << "Unknown\n";
            else cout << "Different\n" << answer << "\n"; 
        }
    }
}
0