hdu 1598 find the most comfortable road
hdu 1598
find the most comfortable road
题目的意思是很多连接的点中,问x到y点的最小差值。
差值的计算是,在这条路径中的最大的值-最小的值。
感觉像流的问题。
却十分巧妙的用并查集来做。
问题的关键还是在处理 最小差值。
1贪心+并查。
将排序(从小到大)后的进行判断,是否f[x]==f[y]来结束。
那谁是起点??这也是个难点,任一点都可能是起点,我们只能通过for(i=1;i<=n;i++)来求取min。
int pd(int x,int y,int m,int n)
{
int i,j,ans=10000003;
for(i=1;i<=m;i++)
{
ini(n);
for(j=i;j<=m;j++)
{
Union(a[j].q,a[j].z);
if(find(x)==find(y))
break;
}
if(j>=m+1)break;
if(a[j].info-a[i].info<ans)
ans=a[j].info-a[i].info;
}
if(ans==10000003) return -1;
else return ans;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步