diff --git "a/khj20006/202511/09 BOJ G4 \353\214\200\354\240\204 \353\217\204\354\213\234\354\262\240\353\217\204 2\355\230\270\354\204\240.md" "b/khj20006/202511/09 BOJ G4 \353\214\200\354\240\204 \353\217\204\354\213\234\354\262\240\353\217\204 2\355\230\270\354\204\240.md" new file mode 100644 index 00000000..68a22f26 --- /dev/null +++ "b/khj20006/202511/09 BOJ G4 \353\214\200\354\240\204 \353\217\204\354\213\234\354\262\240\353\217\204 2\355\230\270\354\204\240.md" @@ -0,0 +1,52 @@ +```cpp +#include +using namespace std; + +int N; +vector> v(100001); +vector arr; +bitset<100001> vis; + +void dfs(int n, int p) { + if(n == N) vis[n] = 1; + for(int i:v[n]) if(i != p) { + dfs(i,n); + if(vis[i]) vis[n] = 1; + } +} + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin>>N; + for(int i=1,a,b;i>a>>b; + v[a].push_back(b); + v[b].push_back(a); + } + + dfs(1,0); + for(int i=1;i<=N;i++) if(!vis[i]) { + int cnt = 0; + queue q; + vis[i] = 1; + q.push(i); + while(!q.empty()) { + int n = q.front(); q.pop(); + cnt++; + for(int j:v[n]) if(!vis[j]) { + vis[j] = 1; + q.push(j); + } + } + arr.push_back(cnt); + } + long long sum = 0, ans = 0; + for(int i:arr) { + ans += sum * i; + sum += i; + } + cout<