Các bài nộp | Làm tốt nhất | Về danh sách bài |
LIST2509 - Danh sách liên kết - Linked list |
Ta xét 1 cách biểu diễn danh sách: danh sách móc nối đơn:
Danh sách móc nối đơn gồm các nút nối với nhau 1 chiều. Mỗi nút gồm 2 trường:
Trường thứ nhất chứa giá trị nút đó.
Trường thứ hai chứa liên kết (con trỏ) đến nút tiếp theo. Tức là chứa đủ thông tin để biết nút kế tiếp là nút nào. Trong trường hợp đây là nút cuối cùng nó mang 1 giá trị đặc biệt (NULL)
Bài toán:
Cho 1 đồ thị, ở trạng thái ban đầu chưa có đỉnh nào. Có ba thao tác:
1 Add(i): Thêm đỉnh i vào đồ thị
2 Insert(i, j): thêm cạnh (i, j) nối 2 đỉnh i, j vào đồ thị.
3 Delete(i, j): xoá cạnh (i, j) nối 2 đỉnh i, j ra khỏi đồ thị.
Sau khi thực hiện xong 1 dãy các thao tác 1, 2, 3. Đưa ra số đỉnh trong đồ thị và danh sách các đỉnh kề với mối đỉnh của đồ thị.
Yêu cầu: Giải quyết bài toán bằng cách dùng danh sách liên kết.
Input
Dòng đầu tiên ghi P là số thao tác. ( 1 <= P <= 10000)
P dòng tiếp theo: Đầu tiên ghi số i là mã số của lệnh
i > 1 thì ghi cặp số i, j là 2 đỉnh của 1 cạnh.
Output
Dòng đầu tiên ghi số n là số đỉnh có trong đồ thị.
n dòng tiếp theo: dòng thứ i ghi k là số đỉnh kề với nó, k số tiếp theo là danh sách các đỉnh kề với đỉnh i.
Example
Input: 10 1 1 2 1 2 1 1 2 1 3 2 2 3 3 3 1 1 2 5 4 Output: 2 2 1 3 0 1 5 1 4
Được gửi lên bởi: | special_one |
Ngày: | 2009-01-04 |
Thời gian chạy: | 1s |
Giới hạn mã nguồn: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Ngôn ngữ cho phép: | C CSHARP CPP JAVA PAS-FPC |