Submission #2894

#TimeUsernameProblemLanguageResultExecution timeMemory
2894kipa00간선 파괴 (GA5_destroy)C++98
25 / 100
2500 ms2676 KiB
#include <cstdio>
#include <vector>
#include <memory.h>
using namespace std;

int V, E, Q;
pair<int, int> region;
vector<pair<int, int> > linklist[701];
bool Check[701];

void dfs(int Node) {
    int i;
    for (i=0; i<linklist[Node].size(); ++i) {
        int Node2 = linklist[Node][i].first, lineNum = linklist[Node][i].second;
        if (region.first <= lineNum && lineNum <= region.second) continue;
        if (!Check[Node2]) {
            Check[Node2] = true;
            dfs(Node2);
        }
    }
}

int dfsAll() {
    int i, cnt = 0;
    for (i=1; i<=V; ++i) {
        if (!Check[i]) {
            Check[i] = true;
            dfs(i);
            ++cnt;
        }
    }
    return cnt;
}

int main() {
    int i;
    scanf("%d %d", &V, &E);
    for (i=1; i<=E; ++i) {
        int st, ed;
        scanf("%d %d", &st, &ed);
        linklist[st].push_back(make_pair(ed, i));
        linklist[ed].push_back(make_pair(st, i));
    }
    scanf("%d", &Q);
    while (Q--) {
        scanf("%d %d", &region.first, &region.second);
        memset(Check, 0, 701);
        printf("%d\n", dfsAll());
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...