solution.cpp 891 字节
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;
const int maxn = 10005;
int a[maxn][maxn];
int dfs_vis[maxn];
int n, m;

struct Node
{
    int data;
} Point[maxn];

void DFS(int a[maxn][maxn], int x, int y)
{
    Point[x].data += y;
    dfs_vis[x] = 1;
    for (int i = 1; i <= n; i++)
    {
        if (a[x][i] == 1 && dfs_vis[i] == 0)
        {
            DFS(a, i, y);
        }
    }
}
int main()
{
    cin >> n >> m;
    cin.get();

    for (int i = 1; i <= m; i++)
    {
        int flag, x1, x2;
        scanf("%d %d %d", &flag, &x1, &x2);
        if (flag == 1)
        {
            a[x1][x2] = a[x2][x1] = 1;
        }
        else if (flag == 2)
        {
            memset(dfs_vis, 0, sizeof(dfs_vis));
            DFS(a, x1, x2);
        }
    }
    for (int i = 1; i <= n; ++i)
    {
        cout << Point[i].data << " ";
    }
    return 0;
}