菜鸡想进大厂:你这啥岗。。
投递小红书等公司10个岗位 >
0 点赞 评论 收藏
分享
牛客第一菜狗:int distant[maxn];//记录到1的距离,-1表示还没遍历到
vector<int> g[maxn];
void dfs(int st, int dis, int *total){
int i;
for(i = 0; i < g[st].size(); ++i){
int child = g[st][i];
if(distant[child] == -1){
distant[child] = dis+1;
*total += 2;
dfs(child, dis+1, *total);
}
}
}
int main(){
/*
io
*/
memset(distant, -1, sizeof(distant));
int total = 0; //总共的路径,表示从1开始转一圈回来的长度
distant[1] = 0;
dfs(1,0,&total);
int i, maxd = -1;
for(i = 1; i <= n; ++i)
if(maxd < distant[i]) maxd = distant[i];
printf("%d\n", total - maxd);
} 我的伪代码大概就是这样,思路还是很简单的
投递美团等公司10个岗位 >
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
关注他的用户也关注了: