차집합의 합집합 수를 구하는 문제이다set을 이용하면 쉽게 풀 수 있다 1. set을 하나 만들고 A의 원소를 다 넣는다2. B의원소를 확인하며 이미 set에 있다면 지우고 없다면 넣는다3. set의 크기가 곧 답이다! 소스코드123456789101112131415161718#include #include using namespace std;set a;int n, m;int main() { scanf(" %d %d", &n, &m); for (int i = 0; i
트리의 지름 구하는법을 들어만봤는데 이번에 처음으로 구해봤다weeklyps.com을 보며 공부했다! 2가지 방법이 있는데 그리디를 이용하는게 쉽길래 그리디 이용 ㅎㅎ 방법은 간단한다 1. 임의의 정점 a에서 가장 먼~~ 정점 b를 찾는다2. 그 후 찾은 정점 b에서 가장 먼~~ 정점 c를 찾는다3. 그럼 b에서 c까지의 거리가 트리의 지름이 된다 증명은 복잡하므로 생략 소스코드12345678910111213141516171819202122232425262728293031323334353637383940#include #include #include #include using namespace std;vector Graph;int n, d[10010];bool check[10010]; int dfs(int..
Cycle찾는 함수 만들어서 풀다가 계속 틀렸다 ㅎㅎ얼마전 코포 Div3 E번과 거의 똑같은 문제다 푸는 방법은 1. 각 정점의 deg배열을만들고 그래프를 입력받을 때 계산해준다2. check안된 곳에서 dfs를 돌린다3. (정점 == (간선/2)+1) 이라면 우리가 원하는 트리다 소스코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#include #include #include #include using namespace std;vector Graph;vector vt;int deg[505];bool check[505];int n, m, v, e; void dfs(int ..
하하하 알고리즘 하나도 기억이 안나서 오늘부터 글을 쓰면서 강제로 기억해야겠다. 쉬운것부터 차근차근 다시 해야지..! 이 문제는 Cycle을 찾는 문제이다. 조건은 처음시작한 정점으로 마지막에 다시 돌아오는 것인데 중간에 다른 정점으로 빠지는 간선이 존재하면 안된다..! 이 사진중에 (15, 5, 11, 9) / (7, 10, 16) 만이 조건을 만족하는 Cycle이다! 처음에 dfs를 돌리고 (정점*2 == 간선) 했다가 18번째 테케에서 틀렸다 ㅎ 솔루션은 1. 각 정점의 degree를 구한다 2. dfs를 돌리며 방문한점을 벡터에 넣어준다. 3. dfs가 끝난 후 벡터에 들어있는 정점들이 모두 2의 degree를 갖는다면 문제에서 원하는 cycle이다! 이렇게 찾아주면 된다! 소스코드12345678..