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;
}