How Many Tables hdu1213

来源:互联网 发布:python 画热力图 编辑:程序博客网 时间:2024/05/18 07:00

深搜一次。。并查集也可以

/*********************************************** * Author: fisty * Created Time: 2015/2/26 19:49:14 * File Name   : C.cpp *********************************************** */#include <iostream>#include <cstring>#include <deque>#include <cmath>#include <queue>#include <stack>#include <list>#include <map>#include <set>#include <string>#include <vector>#include <cstdio>#include <bitset>#include <algorithm>using namespace std;#define Debug(x) cout << #x << " " << x <<endl#define Memset(x, a) memset(x, a, sizeof(x))const int INF = 0x3f3f3f3f;typedef long long LL;typedef pair<int, int> P;#define FOR(i, a, b) for(int i = a;i < b; i++)int n, m;#define MAX_N 2000vector<int> G[MAX_N];int vis[MAX_N];void dfs(int u){    for(int i = 0;i < G[u].size(); i++){        int v = G[u][i];        if(vis[v]) continue;        vis[v] = 1;        dfs(v);    }}int main() {    //freopen("in.cpp", "r", stdin);    cin.tie(0);    ios::sync_with_stdio(false);    int t;    cin >> t;    while(t--){        cin >> n >> m;        Memset(G, 0);        FOR(i, 0, m){            int u, v;            cin >> u >> v;            G[u].push_back(v);            G[v].push_back(u);        }        int ans = 0;        Memset(vis, 0);        for(int i = 1;i <= n; i++){            if(!vis[i]){                vis[i] = 1;                ans++;                dfs(i);            }        }        cout << ans << endl;    }    return 0;}


0 0
原创粉丝点击