trang chủ / đề bài / voi14_qos

Chất lượng dịch vụ

Đề bài

Mô tả

Bài toán định tuyến kèm theo chất lượng dịch vụ bảo đảm trong các ứng dụng đa phương tiện như truyền hình ảnh và âm thanh theo yêu cầu là vấn đề thời sự trong những năm gần đây. Trong bài toán này, chúng ta quan tâm đến độ trễ của các đường truyền tin.

Công ty cung cấp dịch vụ mạng ESI vừa thiết lập một mạng truyền thông giữa các điểm cung cấp dịch vụ và khách hàng, bao gồm n nút và m kênh nối trực tiếp một chiều giữa hai nút. Các nút được đánh số từ 1 đến n, trong đó nút 1 là nút nguồn. Các kênh nối được đánh số từ 1 đến m. Kênh nối thứ i cho phép truyền tin (một chiều) từ nút ui tới nút vi và có độ trễ là c(ui,vi). Có không quá một kênh truyền tin từ một nút đến một nút khác.

Một đường truyền tin từ nút nguồn đến nút t được biểu diễn dưới dạng một dãy liên tiếp các chỉ số của các nút, xuất phát từ 1 và kết thúc tại t. Độ trễ của đường truyền tin được định nghĩa là tổng độ trễ của các kênh nối trực tiếp trên đường truyền tin đó. Để khảo sát các đường truyền tin từ nút nguồn đến một nút t trong mạng, công ty ESI xác định Cmin là độ trễ nhỏ nhất trong tất cả các độ trễ của các kênh trong mạng và Tmin là độ trễ của đường truyền tin từ nút nguồn đến nút t với độ trễ nhỏ nhất.

Để đảm bảo dịch vụ đường truyền với chất lượng cao, đường truyền tin từ nút nguồn đến nút t phải thỏa mãn điều kiện QoS (Quality of Service) sau đây: độ trễ của đường truyền tin phải nhỏ hơn hoặc bằng tổng số Tmin+Cmin. Sau đó ESI sắp xếp tất cả các đường truyền tin từ nút nguồn đến nút t thỏa mãn điều kiện QoS theo thứ tự từ điển. Theo định nghĩa của công ty ESI, đường truyền tin (x1,x2,…,xp) được gọi là có thứ tự từ điển nhỏ hơn đường truyền tin (y1,y2,…,yq) nếu:

  • hoặc x1<y1;
  • hoặc là p<q và xi=yi với mọi i=1,2,…,p;
  • hoặc là tồn tại một chỉ số u (1<u≤p) sao cho xi=yi với mọi i=1,2,…,u−1 và xu<yu.

Yêu cầu: Cho trước số nguyên dương k, hãy tìm đường truyền tin từ 1 đến t thỏa mãn điều kiện QoS thứ k trong thứ tự từ điển.

Dữ liệu vào

  • Dòng đầu tiên chứa bốn số nguyên dương n, m, t, k (k≤109).
  • Dòng thứ i trong số m dòng tiếp theo ghi ba số nguyên dương ui, vi, c(ui,vi) lần lượt là chỉ số đầu, chỉ số cuối và độ trễ của kênh thứ i. Độ trễ của các kênh là nhỏ hơn 100.

Dữ liệu ra

In ra −1 nếu không tìm được đường truyền tin thỏa mãn yêu cầu đặt ra, trái lại in ra thông tin về đường truyền tin tìm được bao gồm:

  • Dòng đầu ghi số nguyên dương s là số lượng nút trên đường truyền tìm được;
  • Dòng thứ hai ghi s số lần lượt là chỉ số của các nút theo thứ tự mà đường truyền tìm được đi qua, bắt đầu từ nút 1 kết thúc ở nút t.

Ràng buộc

  • 2≤n≤1000; 1≤m≤105; 2≤t≤n; 1≤k≤109.
  • 1≤ui,vi≤n, ui≠vi; có không quá một kênh từ một nút đến một nút khác.
  • 1≤c(ui,vi)<100.

Subtasks

  • Subtask 1 (30% số điểm): n≤10.
  • Subtask 2 (30% số điểm): n≤100.
  • Subtask 3 (40% số điểm): n≤103, m≤105.

Mỗi subtask gồm nhiều test, mỗi test được chấm điểm riêng.

Ví dụ

Input Output Giải thích
7 8 7 2
1 2 1
1 5 1
2 3 1
2 4 1
3 7 2
4 7 2
5 6 1
6 7 1
4
1 2 4 7
Tmin=3 (đường 1,5,6,7), Cmin=1. Các đường có độ trễ không quá 4 theo thứ tự từ điển: (1,2,3,7), (1,2,4,7), (1,5,6,7).
3 2 3 1
1 2 5
3 2 5
-1 Không có đường truyền tin nào từ nút 1 đến nút 3.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0