Submission #1691181


Source Code Expand

#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;

using ll = long long;
using P = pair<int, int>;

// 4近傍、8近傍
int dx[] = {1, 0, -1, 0, 1, -1, -1, 1};
int dy[] = {0, 1, 0, -1, 1, 1, -1, -1};

const int INF = 1e9;
int N, M;
int edge[310][310];
int dist[310];

void dijkstra(int s) {
  dist[s] = 0;
  priority_queue<P, vector<P>, greater<P> > que;
  P cur = P(0, s);
  que.push(cur);

  while (!que.empty()) {
    cur = que.top();
    que.pop();

    int from = cur.second;
    for (int i = 0; i < N; i++) {
      if (edge[from][i] == 0) continue;

      if (dist[i] > dist[from] + edge[from][i]) {
        dist[i] = dist[from] + edge[from][i];
        que.push(P(dist[i], i));
      }
    }
  }
}

int main() {
  // 入力
  cin >> N >> M;
  int u, v, l;
  for (int i = 0; i < M; i++) {
    cin >> u >> v >> l;
    u--; v--;
    edge[u][v] = edge[v][u] = l;
  }

  // ダイクストラ法で最短距離を探す
  int ans = INF;
  for (int i = 1; i < N; i++) {
    if (edge[0][i] == 0) continue;

    int tmp = edge[0][i];
    edge[0][i] = edge[i][0] = 0;
    fill(dist, dist + 310, INF);
    dijkstra(i);
    if (dist[0] != INF) ans = min(ans, dist[0] + tmp);
    edge[0][i] = edge[i][0] = tmp;
  }

  // 解答
  cout << (ans == INF ? -1 : ans) << endl;

  return 0;
}

Submission Info

Submission Time
Task C - Blue Bird
User university
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1505 Byte
Status AC
Exec Time 348 ms
Memory 640 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 33
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 92 ms 512 KB
subtask1_02.txt AC 30 ms 512 KB
subtask1_03.txt AC 227 ms 640 KB
subtask1_04.txt AC 2 ms 256 KB
subtask1_05.txt AC 39 ms 384 KB
subtask1_06.txt AC 190 ms 640 KB
subtask1_07.txt AC 7 ms 384 KB
subtask1_08.txt AC 2 ms 384 KB
subtask1_09.txt AC 148 ms 512 KB
subtask1_10.txt AC 78 ms 512 KB
subtask1_11.txt AC 1 ms 256 KB
subtask1_12.txt AC 8 ms 512 KB
subtask1_13.txt AC 18 ms 384 KB
subtask1_14.txt AC 2 ms 384 KB
subtask1_15.txt AC 283 ms 640 KB
subtask1_16.txt AC 193 ms 640 KB
subtask1_17.txt AC 8 ms 640 KB
subtask1_18.txt AC 338 ms 640 KB
subtask1_19.txt AC 348 ms 640 KB
subtask1_20.txt AC 37 ms 640 KB
subtask1_21.txt AC 69 ms 640 KB
subtask1_22.txt AC 334 ms 640 KB
subtask1_23.txt AC 230 ms 640 KB
subtask1_24.txt AC 48 ms 640 KB
subtask1_25.txt AC 205 ms 640 KB
subtask1_26.txt AC 98 ms 640 KB
subtask1_27.txt AC 94 ms 640 KB
subtask1_28.txt AC 11 ms 640 KB
subtask1_29.txt AC 102 ms 640 KB
subtask1_30.txt AC 2 ms 640 KB