AOJ 0508 String With Rings
あけましておめでとうございます
DFSやるだけなのにWAをかさねて新年そうそうに絶望。
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int N; bool used[101]; vector<int> rings[101]; int dfs(int p){ int ret = 1; for(int i = 0; i < rings[p].size(); i++){ if(!used[rings[p][i]]){ used[rings[p][i]] = true; ret = max(ret, dfs(rings[p][i]) + 1); used[rings[p][i]] = false; } } return ret; } int main(){ while(scanf("%d", &N), N!=0){ for(int i = 0; i < 101; i++) rings[i].clear(); for(int i = 0; i < N; i++){ int a, b; scanf("%d %d", &a, &b); rings[a].push_back(b); rings[b].push_back(a); } int ans = 0; for(int i = 1; i <= 100; i++){ fill(used, used + 101, false); used[i] = true; ans = max(ans, dfs(i)); } printf("%d\n", ans); } return 0; }