В неориентированный взвешенный граф добавляют ребра. Напишите программу, которая в некоторые моменты находит сумму весов ребер в компоненте связности.
Входные данные
В первой строке записано два числа n
и m
(1 <= n, m <= 106) - количество вершин в графе и количество производимых добавлений и запросов. Далее следует m
строк с описанием добавления или запроса. Каждая строка состоит из двух или четырех чисел. Первое из чисел обозначает код операции. Если первое число 1
, то за ним следует еще три числа x
, y
, w
. Это означает, что в граф добавляется ребро из вершины x
в вершину y
веса w
. (1 <= x < y <= n, 1 <= w <= 103). Кратные ребра допустимы. Если первое число 2
, то за ним следует ровно одно число x
. Это означает, что необходимо ответить на вопрос, какова сумма ребер в компоненте связности, которой принадлежит вершина x
(1 <= x <= n).
Выходные данные
Для каждой операции с кодом
2
выведите ответ на поставленную задачу. Ответ на каждый запрос выводите на отдельной строке.
Примеры
№ |
Входные данные |
Выходные данные |
1 |
6 10
2 1
1 1 2 1
2 1
1 2 4 2
2 1
1 1 4 3
2 1
1 3 5 3
2 5
2 6
|
0
1
3
6
3
0
|