[백준 c++] 13244 Tree

jw·2022년 10월 24일
0

백준

목록 보기
58/141
post-thumbnail

문제 설명

https://www.acmicpc.net/problem/13244
트리인지 아닌지 구분하는 문제

입력
T: 테스트 케이스
N: 노드 수
M: edge 수
M개 줄에 걸쳐 연결된 노드 2개

출력
tree OR graph

아이디어

연결된 노드 a,b가 입력되면 c[a][b]=1, c[b][a]=1
dfs로 모든 노드가 서로 연결되는지 체크
간선m 의 개수가 n-1인지 체크

전체 코드

#include <iostream>
using namespace std;
int t, n, m, a, b, cnt, c[1001][1001], visited[1001]; 
void dfs(int node)
{
    visited[node] = 1;
    for (int i = 1; i <= n; i++)
    {
        if (c[node][i] && !visited[i])
            dfs(i);
    }
}
int main()
{
    cin >> t;
    while (t--)
    {
        fill(visited, visited + 1001, 0);
        fill(&c[0][0], &c[0][0] + 1001 * 1001, 0);
        cnt = 0;
        cin >> n >> m;
        for (int i = 0; i < m; i++)
        {
            cin >> a >> b;
            c[a][b] = 1, c[b][a] = 1;
        }

        for (int i = 1; i <= n; i++)
        {
            if (!visited[i])
            {
                dfs(i);
                cnt++;
            }
        }
        if (m == n - 1 && cnt == 1)
            cout << "tree"
                 << "\n";
        else
            cout << "graph"
                 << "\n";
    }
}
profile
다시태어나고싶어요

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN