//带权并查集,由部分关系建立出整体关系
int find(int x)
{
if (x != parent[x])
{
int t = parent[x];
parent[x] = find(parent[x]);
score[x] += score[t];
}
return parent[x];
}
//初始化
for (int i = 1; i <= n; i ++ )
{
parent[i] = i;
score[i] = 0;
}
bool flag = true;
while (m -- )
{
int x, y, s;
cin >> x >> y >> s;
int px = find(x), py = find(y);
if (px != py)
{
parent[px] = py;
score[px] = -score[x] + score[y] + s;
}
else
{
if (score[x] - score[y] != s) flag = false;
}
}/*例题见cf886的E题(记得开longlong)*/