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); } 我的伪代码大概就是这样,思路还是很简单的
点赞 3

相关推荐

05-13 00:41
已编辑
北京邮电大学 Java
理性的杰克刷牛客:ai肯定要有的,最好学一下agent方向加一个智能客服什么的进去,并且多加点什么skill,mcp啥的,另外你现在的项目深度有些浅,这些功能都太简单了,而且也不是真正能扛高并发的实现,没有什么太大的亮点,可以去网上找点更有深度的项目。可以先投一些中小厂,有实习经历以后再去大厂,你现在这个大厂可能机会不大
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务