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;
}