結果
問題 | No.1480 Many Complete Graphs |
ユーザー |
![]() |
提出日時 | 2021-04-16 20:30:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 207 ms / 2,000 ms |
コード長 | 1,590 bytes |
コンパイル時間 | 1,939 ms |
コンパイル使用メモリ | 182,608 KB |
実行使用メモリ | 32,128 KB |
最終ジャッジ日時 | 2024-07-03 04:07:14 |
合計ジャッジ時間 | 8,237 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 57 |
ソースコード
#include <bits/stdc++.h>using namespace std;int main(){int N, M;cin >> N >> M;vector<vector<pair<int, int>>> E(N + M * 8);for (int i = 0; i < M; i++){int k, c;cin >> k >> c;vector<int> s(k);for (int j = 0; j < k; j++){cin >> s[j];}int id = N + i * 8;for (int j = 0; j < k; j++){if (s[j] % 2 == 0){E[s[j] - 1].push_back(make_pair(s[j] / 2, id));E[s[j] - 1].push_back(make_pair(s[j] / 2, id + 1));E[id + 4].push_back(make_pair(s[j] / 2, s[j] - 1));E[id + 6].push_back(make_pair(s[j] / 2, s[j] - 1));}if (s[j] % 2 == 1){E[s[j] - 1].push_back(make_pair(s[j] / 2, id + 2));E[s[j] - 1].push_back(make_pair(s[j] / 2, id + 3));E[id + 5].push_back(make_pair(s[j] / 2, s[j] - 1));E[id + 7].push_back(make_pair(s[j] / 2, s[j] - 1));}}E[id].push_back(make_pair(c, id + 4));E[id + 1].push_back(make_pair(c + 1, id + 5));E[id + 2].push_back(make_pair(c + 1, id + 6));E[id + 3].push_back(make_pair(c + 1, id + 7));}int V = N + M * 8;vector<long long> d(V, -1);priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<tuple<long long, int>>> pq;pq.push(make_pair(0, 0));while (!pq.empty()){long long dd = pq.top().first;int v = pq.top().second;pq.pop();if (d[v] == -1){d[v] = dd;for (auto P : E[v]){int w = P.second;if (d[w] == -1){pq.push(make_pair(dd + P.first, w));}}}}cout << d[N - 1] << endl;}