#include #include using namespace std; int n, m; bool a[1001][1001]; void in() { scanf("%d %d", &n, &m); for (int i = 0; i < m; i++) { int v1, v2, w; scanf("%d %d %d", &v1, &v2, &w); a[v1 - 1][v2 - 1] = true; } } void TransitiveClosure() { for (int k = 0; k < n; k++) for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) a[i][j] |= (a[i][k] && a[k][j]); } void print() { for (int i = 0; i < n; i++) { for (int j = 0; j < n - 1; j++) printf("%d ", a[i][j]); printf("%d\n", a[i][n - 1]); } } int main() { in(); TransitiveClosure(); print(); return 0; } /* 4 5 1 2 1 1 3 1 3 1 1 2 3 1 3 4 1 */