zoukankan      html  css  js  c++  java
  • 【luogu5651】 基础最短路练习题 [?]

    开始只是打了个暴力 然后数组大小开错RE了 然后就没管了颓废去了 果然还是水题坐着舒服

    题目保证不存在简单环使得边权异或和不为0 即所有环的权值异或和都为0 那么随便在那个点拆开的话断开的这两条路上的权值异或和都相同

    所以就把环断开 将其变成一颗树 然后

    int tot=0,head[N];
    struct edge{int v,w,nxt;}e[N<<2];
    void add(int u,int v,int w){e[++tot]=(edge){v,w,head[u]},head[u]=tot;}
    
    int dis[N];
    void dfs(int u,int ff){
    	for(int i=head[u],v;i;i=e[i].nxt)
    	if((v=e[i].v)!=ff) dis[v]=dis[u]^e[i].w,dfs(v,u);
    }
    
    int find(int x){return f[x]==x?x:f[x]=find(f[x]);}
    int main(){
    	rd(n),rd(m),rd(Q);
    	for(int i=1;i<=n;++i) f[i]=i;
    	for(int i=1,u,v,w;i<=m;++i)
    	rd(u),rd(v),rd(w),(find(u)!=find(v))?(add(u,v,w),add(v,u,w),f[f[u]]=f[v]):0;
    	dfs(1,0);
    	for(int i=1,x,y;i<=Q;++i)
    	rd(x),rd(y),printf("%d
    ",dis[x]^dis[y]);
    	return 0;
    }
    
  • 相关阅读:
    Loadrunner初学
    loadrunner安装
    性能测试基础知识
    编程语言的基本套路
    Axure RP初学
    网络分层
    网络软件的组成
    C#MVC的基础知识
    xml的基本认识
    添加ASPCMS模板的步骤
  • 原文地址:https://www.cnblogs.com/lxyyyy/p/11853172.html
Copyright © 2011-2022 走看看