数据过水
查看原帖
数据过水
1038651
llamn楼主2024/8/16 17:18

我用的这个飞屋代码求两点间距离:
(f[i]表示i的父亲,c[i]表示i的层数)

int fw_ju(int t1, int t2)
{
    int rt = 0;
    while(c[t1] > c[t2])
    {
        t1 = f[t1], rt++;
    }
    while(c[t2] > c[t1])
    {
        t2 = f[t2], rt++;
    }
    while(t2 != t1)
    {
        t1 = f[t1], rt++;
        t2 = f[t2], rt++;
    }return rt;
}
void dfs(int d)
{
    int i;
    for (i = h[d]; i; i = e[i].lst)
    {
        if (ved[e[i].to]) continue;
        c[e[i].to] = c[d]+1;
        f[e[i].to] = d;
        ved[e[i].to] = 1;
        dfs(e[i].to);
    }
}

不出意外,它会T得很惨吧?(尤其是这道题时限还只有100ms)

然后:记录

《只用了44ms》

2024/8/16 17:18
加载中...