为什么在PTA C++的编码器中出现的总是答案错误

#include
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include
#include
#include<math.h>
using namespace std;
/**

  • */
    int maxNum=0; //最多能走过城市的数量
    int start=1; //起点

void dfs(vector<vector > graph,int num,int depth,int flag[]);

int main(){
int n;
scanf("%d",&n);
vector<vector > graph(n+1);//存各个点
int flag[n+1]={0};//用来标记该点是否遍历过
int a,b;
//建立与该点相连的城市
for(int i=0;i<n-1;i++){
scanf("%d %d",&a,&b);
graph[a].push_back(b);//插入
graph[b].push_back(a);//插入
}
/**
*输出每个点与哪一个点相连
*/
for(int i=1;i<=n;i++){
vector v=graph[i];
int len =v.size();
printf("与城市 %d 相邻的城市有: ",i);
for(int j=0;j<len;j++){
printf(" %d",v[j]);
}
printf("\n");
}
//任意选一个点,这里默认设置选城市1,进行dfs,得到以该点为起点的的最大路径
dfs(graph,start,0,flag);//参数 2:城市起点 3:去过的城市数量总和
printf("起点为:%d\n",start);

//重置一下第一次的记录
maxNum=0;
memset(flag, 0, sizeof(flag));//数组清0

//以该点位起点,再进行一次dfs.得到答案。
dfs(graph,start,0,flag);
printf("终点为:%d\n",start);
printf("Andy最多能走过 %d 个城市\n",maxNum);
system("pause");
return 0;

}

void dfs(vector<vector > graph,int num,int depth,int flag[]){
if(depth>=maxNum){
start=num;
}
if(flag[num]==1){//已经遍历,跳过
return;
}
depth++;
maxNum=max(depth,maxNum);
vector v=graph[num];
int len =v.size();
flag[num]=1;
for(int j=0;j<len;j++){
if(flag[v[j]]!=1) //遍历过的,跳过
dfs(graph,v[j],depth,flag);
}
}