POJ 1985 COW MARATHON
来源:互联网 发布:淘宝模特小倩 编辑:程序博客网 时间:2024/05/21 17:40
原文:http://blog.acmj1991.com/?p=608
题意:给你一棵树让你找到相聚最远的两个点
思路:对任意一点进行广搜找到相距最远的点,再对这一点进行广搜找到与它相距最远的点,他们之间的距离就是最大的距
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std; #define maxN 40100int num,head[maxN],dis[maxN],vis[maxN];struct node{ int v,next,w;}po[200000]; void add(int u,int v,int w){ po[num].v=v,po[num].w=w; po[num].next=head[u],head[u]=num++; po[num].v=u,po[num].w=w; po[num].next=head[v],head[v]=num++;}int BFS(int s){ int maxx=0,k=s,hd=0,tail=0,q[maxN*4]; q[hd++]=s;vis[s]=1; while(hd!=tail) { int u=q[tail++]; for(int i=head[u];i!=-1;i=po[i].next) if(!vis[po[i].v]){ dis[po[i].v]=dis[u]+po[i].w; q[hd++]=po[i].v; if(dis[po[i].v]>dis[k])k=po[i].v; vis[po[i].v]=1; } } return k;} int main(){ int n,m; char str[5]; memset(head,-1,sizeof(head)); scanf("%d%d",&n,&m); for(int i=0;i<m;i++) { int u,v,w; scanf("%d%d%d%s",&u,&v,&w,str); add(u,v,w); } int k=BFS(1); memset(dis,0,sizeof(dis)); memset(vis,0,sizeof(vis)); k=BFS(k); printf("%d\n",dis[k]);}
- POJ 1985 COW MARATHON
- POJ 1985 Cow Marathon
- POJ --1985--Cow Marathon
- poj 1985 Cow Marathon
- POJ 1985 Cow Marathon
- POJ 1985 Cow Marathon
- POJ 1985 Cow Marathon
- poj 1985 Cow Marathon
- poj 1985 Cow Marathon
- poj 1985 Cow Marathon
- POJ -- 1985 Cow Marathon
- 【POJ】[1985]Cow Marathon
- POJ 1985 Cow Marathon
- POJ-1985 Cow Marathon
- POJ 1985 Cow Marathon
- 【POJ 1985 Cow Marathon】
- POJ 1985 Cow Marathon 搜索
- A - Cow Marathon POJ-1985
- 唐骏常出三道微软面试题
- jsp中tomcat部署实现外网访问
- 使用VIM将一行X509证书分解为多行的方式
- Asp.net导出Excel(三)
- 安装vs2010后安装MSDN文档的方法
- POJ 1985 COW MARATHON
- POJ 1952 BUY LOW, BUY LOWER(DP)
- ExtJS中layout的9种布局风格
- POJ 1948 TRIANGULAR PASTURES(背包问题)
- 微软算法面试题
- Android App Widgets
- POJ 1833 排列
- 信访项目
- 获取字符串的长度 (汉字占两个字节)