Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <queue>
- using namespace std;
- const int INF = (int)1e9;
- int n, ans = INF;
- vector<vector<int> > g, c;
- vector<int> d;
- void bfs() {
- queue<int> q;
- d.resize(n + 1, INF);
- d[1] = 0;
- q.push(1);
- while (!q.empty()) {
- int v = q.front();
- q.pop();
- for (int i = 0; i < g[v].size(); ++i) {
- int to = g[v][i];
- d[to] = d[v] + c[v][i];
- q.push(to);
- }
- }
- }
- int main() {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- scanf("%d", &n);
- g.resize(n + 1);
- c.resize(n + 1);
- for (int i = 0; i < n; ++i) {
- int v, k;
- scanf("%d%d", &v, &k);
- for (int i = 0; i < k; ++i) {
- int to, cost;
- scanf("%d%d", &to, &cost);
- g[v].push_back(to);
- c[v].push_back(cost);
- }
- }
- bfs();
- for (int i = 1; i <= n; ++i) {
- if (g[i].empty() && d[i] < ans) {
- ans = d[i];
- }
- }
- printf("%d\n", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment