/* -*- coding: utf-8 -*- * * 3482.cc: No.3482 Quod Erat Demonstrandum - yukicoder */ #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 200000; const int MAX_N2 = MAX_N * 2; /* typedef */ using qi = queue; using pii = pair; using vpii = vector; /* global variables */ vpii nbrs[MAX_N]; int ds[MAX_N2]; /* subroutines */ /* main */ int main() { int tn; scanf("%d", &tn); while (tn--) { int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++) nbrs[i].clear(); for (int i = 0; i < m; i++) { int u, v, w; scanf("%d%d%d", &u, &v, &w); u--, v--, w--; nbrs[u].push_back({v, w}); nbrs[v].push_back({u, w}); } int n2 = n * 2; fill(ds, ds + n2, -1); ds[0] = 0; qi q; q.push(0); while (! q.empty()) { int u = q.front(); q.pop(); int up = (u >> 1), uq = (u & 1); for (auto [vp, w]: nbrs[up]) { if (w == 0 || uq == 0) { int v = (vp << 1) | (uq | w); if (ds[v] < 0) ds[v] = ds[u] + 1, q.push(v); } } } int gl0 = ((n - 1) << 1), gl1 = (gl0 | 1); if (ds[gl0] >= 0) printf("Same\n%d\n", ds[gl0]); else if (ds[gl1] >= 0) printf("Different\n%d\n", ds[gl1]); else puts("Unknown"); } return 0; }