- 货车运输
 - @ 2017-01-26 21:41:50
 
紧急求救!!
在线等!!
哪位大神能帮忙看一下。
不知道为什么RE了。
下面的部分都注释掉了。
```c++
#include <cstdio>
#include <cctype>
#include <cmath>
#include <climits>
#include <algorithm>
#include <vector>
using namespace std;
#define rep(i,a,b) for (int i=(a);i<=(b);i++)
#define per(i,a,b) for (int i=(a);i>=(b);i--)
const int N=16384;
const int M=65536;
const int U=16;
const int MAX=INT_MAX>>1;
int rd(void);
int n,m;
struct Ed {
    int u,v,d;
    Ed(int _u=0,int _v=0,int _d=0) {
        u=_u,v=_v,d=_d;
    }
    friend int operator < (Ed a,Ed b) {
        return a.d>b.d;
    }
}ed[M];
int f[N];
struct G {
    int v,d;
    G(int _v=0,int _d=0) {
        v=_v,d=_d;
    }
};
vector<G> g[N];
int dep[N];
int c;
int pre[U][N];
int minVal[U][N];
int q;
int Find(int x) {
    if (f[x]==x)
        return x;
    f[x]=Find(f[x]);
    return f[x];
}
void DFS(int x,int fa) {
    rep(i,1,g[x].size()) {
        int nx=g[x][i-1].v,d=g[x][i-1].d;
        if (nx!=fa) {
            dep[nx]=dep[x]+1;
            pre[0][nx]=x;
            minVal[0][nx]=d;
            DFS(nx,x);
        }
    }
}
int LCA(int x,int y) {
    if (dep[x]<dep[y])
        swap(x,y);
    per(i,c,0)
        if (dep[x]-(1<<i)>=dep[y])
            x=pre[i][x];
    if (x==y) return x;
    per(i,c,0)
        if (pre[i][x]!=pre[i][y])
            x=pre[i][x],y=pre[i][y];
    return pre[0][x];
}
int Query(int x,int y) {
    int fx=Find(x);
    int fy=Find(y);
    if (fx!=fy)
        return -1;
int anc=LCA(x,y);
    int ans=MAX;
int tx=x;
    per(i,c,0)
        if ((dep[x]-dep[anc])>>i&1) {
            ans=min(ans,minVal[i][tx]);
            tx=pre[i][tx];
        }
int ty=y;
    per(i,c,0)
        if ((dep[y]-dep[anc])>>i&1) {
            ans=min(ans,minVal[i][ty]);
            ty=pre[i][ty];
        }
return ans;
}
int main(void) {
    #ifndef ONLINE_JUDGE
        freopen("a.in","r",stdin);
        freopen("a.out","w",stdout);
    #endif
n=rd(),m=rd();
    rep(i,1,m) {
        int u=rd(),v=rd(),d=rd();
        ed[i]=Ed(u,v,d);
    }
/*
    rep(i,1,n)
        f[i]=i;
    sort(ed+1,ed+m+1);
    rep(i,1,m) {
        int u=ed[i].u,v=ed[i].v,d=ed[i].d;
        int fu=Find(u),fv=Find(v);
        if (fu!=fv) {
            f[fu]=fv;
            g[u].push_back(G(v,d));
            g[v].push_back(G(u,d));
        }
    }
c=(int)(log(n)/log(2));
    rep(i,1,n)
        if (!dep[i]) {
            dep[i]=1;
            pre[0][i]=i,minVal[0][i]=MAX;
            DFS(i,-1);
        }
    rep(i,1,c) rep(j,1,n) {
        pre[i][j]=pre[i-1][pre[i-1][j]];
        minVal[i][j]=min(minVal[i-1][j],minVal[i-1][pre[i-1][j]]);
    }
q=rd();
    rep(i,1,q) {
        int u=rd(),v=rd();
        int ans=Query(u,v);
        printf("%d\n",ans);
    }
    */
    return 0;
}
int rd(void) {
    /*
    int x=0,f=1; char c=getchar();
    while (!isdigit(c)) {
        if (c=='-') f=-1;
        c=getchar();
    }
    while (isdigit(c)) {
        x=x*10+c-'0';
        c=getchar();
    }
    return x*f;
    */
    int x;
    scanf("%d",&x);
    return x;
}
```
3 条评论
- 
  twd2 LV 9 MOD @ 2017-01-27 16:08:26
这锅我不接>_<
 - 
  @ 2017-01-26 22:45:20
Vijos并没有打开
-DONLINE_JUDGE这个编译开关啊
是时候打开了@twd2 - 
  @ 2017-01-26 22:15:01
嗯这是VIJOS的锅。
在其他网站上都过了。 
- 1
 
信息
- ID
 - 1843
 - 难度
 - 7
 - 分类
 - (无)
 - 标签
 - 递交数
 - 5320
 - 已通过
 - 955
 - 通过率
 - 18%
 - 被复制
 - 10
 - 上传者