Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Nguyễn Duy Minh Lâm  NL

Nhà của tôi  Khoá học  2223II_INT2210_4  Đồ thị  Đường đi ngắn nhất trên đồ thị

Cấu trúc dữ liệu và giải thuật (2223II_INT2210_4) Đường đi ngắn nhất trên đồ
thị

Bắt đầu vào lúc Monday, 29 May 2023, 10:22 AM


Trạng thái Đã xong
Kết thúc lúc Monday, 29 May 2023, 10:23 AM
Thời gian thực hiện 7 giây
Điểm 10,00 trên 10,00 (100%)
Câu Hỏi 1 Đúng

Có N điạ điểm trong một thành phố được đánh số từ 1 đến N , có M đường đi nối các địa điểm này với nhau. Tìm đường đi ngắn nhất của tất cả các cặp
đỉnh trên đồ thị.

Đầu vào

Đầu vào từ bàn phím gồm M + 1 dòng. Dòng đầu tiên chứa 2 số nguyên N , M .
(N ≤ 100, M ≤ 5000) M dòng tiếp theo, mỗi dòng chứa 3 số nguyên
u, v, w , thể hiện có đường đi giữa u và v với độ dài w (w ≤ 100) .

Đâu ra

In ra màn hình n dòng N dòng, mỗi dòng gồm N số cách nhau bởi một dấu cách. Số thứ j thuộc dòng thứ i là độ dài đường đi ngắn nhất của từ địa điểm i
đến địa điểm j ( nếu không tồn tại đường đi từ i đến j , ghi ra "-1"\).

For example:

Input Result

5 7 0 132 99 98 127
1 4 98 132 0 33 34 5
3 5 54 99 33 0 1 28
4 3 1 98 34 1 0 29
2 5 5 127 5 28 29 0
5 3 28
4 5 30
2 3 47

Answer:

1 #include<bits/stdc++.h>
2 using namespace std;
3 vector<vector<pair<int,int>>> adj; // luu tru dinh->dinh-dodai
4 int n,m; // so dinh, so canh
5
6
7 void input()
8 ▼ {
9 cin>>n>>m;
10 adj.resize(n+1);
11 while(m--)
12 ▼ {
13 int u,v,w;
14 cin>>u>>v>>w;
15 adj.at(u).push_back({v,w});
16 adj.at(v).push_back({u,w});
17 }
18 }
19
20 int dijkstra(int s, int t)
21 ▼ {
22 vector<long long> d(n+1,INT_MAX); // mang luu duong di chinh
23 d[s] = 0;
24 priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> Q;
25 // luu khoang cach (khoang cach o day la temp -> tap nay la unmarked) - dinh
26 Q.push({0,s});
27 while(!Q.empty())
28 {

Passed all tests!

Đúng

Marks for this submission: 10,00/10,00.

◄ Đường đi ngắn nhất Chuyển tới... Đếm đỉnh ►

You might also like