기본 콘텐츠로 건너뛰기

[10216]vector clear를 생활화하자!

여러 테스트케이스가 주어질때, vector의 resize함수를 호출한다고 vector안의 내용들이 초기화 되지는 않음에 유의하자!
항상 하나의 테스트케이스가 끝나면 vector clear함수를 호출하자!
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <queue>
#include <iostream>
#include <vector>
using namespace std;
struct circle{
float x,y,r;
} typedef circle;
int N;
vector<vector<int>> map;
bool visited[5001];
void bfs(int p){
queue<int> que;
que.push(p);
visited[p] = true;
while (!que.empty()){
int elem = que.front();
que.pop();
for (int i=0;i<map[elem].size();i++){
if (visited[map[elem][i]] == false){
que.push(map[elem][i]);
visited[map[elem][i]] = true;
}
}
}
}
int main() {
int T;
scanf("%d",&T);
while (T--){
int N;
scanf("%d",&N);
for (int j=1;j<=N;j++)
visited[j] = false;
map.resize(N+1);
vector<circle> vec;
vec.resize(N+1);
for (int i=1;i<=N;i++){
circle input;
int x,y,r;
scanf("%d %d %d",&x,&y,&r);
input.x = x; input.y = y; input.r = r;
vec[i] = input;
}
for (int i=1;i<N;i++){
for (int j=i+1;j<=N;j++)
{
double dist = sqrt(pow(vec[i].x - vec[j].x, 2) + pow(vec[i].y - vec[j].y, 2));
if (dist <= vec[i].r+vec[j].r){
map[i].push_back(j);
map[j].push_back(i);
}
}
}
int num = 0;
for (int i=1;i<=N;i++){
if (!visited[i]){
bfs(i);
num++;
}
}
map.clear();
vec.clear();
printf("%d\n",num);
}
}
view raw [BOJ 10216] hosted with ❤ by GitHub

댓글

이 블로그의 인기 게시물

Tree traversal의 3가지

1. 전위 순회 (Preorder Traversal) Root -> Left Tree -> Right Tree   ( 루트를 제일 처음에 방문 ) 2. 중위 순회 (Inorder Traversal) Left Tree -> Root -> Right Tree   ( 루트를 중간에 방문 ) 3. 후위 순회 (Postorder Traversal) Left Tree -> Right Tree -> Root   ( 루트를 제일 마지막에 방문 ) <소스코드> 출처 : http://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder /// C program for different tree traversals #include <stdio.h> #include <stdlib.h> /* A binary tree node has data, pointer to left child    and a pointer to right child */ struct node {      int data;      struct node* left;      struct node* right; }; /* Helper function that allocates a new node with the    given data and NULL left and right pointers. */ struct node* newNode(int data) {      struct node* node = (struct node*)                 ...