CodeForces - 845G
2017-09-06 15:51
316 查看
传送门
题意:给一个无向图,有环,求1点到n点的“最短路”,该最短路是指路径上的边权异或值。
对于一个无向图,求的是异或值,一条边走两次相当于没走,所以对于图上的某个环,环上的边要么走完,要么不走,无向图如果没有环就是一棵树。
我们随机找一条从1到n的路径,然后同时记录下所有环,把所有环的异或值放到线性基里,然后找出最小的结果。
题意:给一个无向图,有环,求1点到n点的“最短路”,该最短路是指路径上的边权异或值。
对于一个无向图,求的是异或值,一条边走两次相当于没走,所以对于图上的某个环,环上的边要么走完,要么不走,无向图如果没有环就是一棵树。
我们随机找一条从1到n的路径,然后同时记录下所有环,把所有环的异或值放到线性基里,然后找出最小的结果。
#include <cstdio> #include <iostream> #include <queue> #include <algorithm> #include <cstring> #include <set> using namespace std; #define N 200010 typedef long long ll; int n,m,tot,sz; int head ,to ,nxt ; ll w ,dis ,P[66],A ; bool vis ; void Add_Edge(int x,int y,ll z){to[tot]=y; w[tot]=z; nxt[tot]=head[x]; head[x]=tot++;} void Dfs(int x,ll s) { vis[x]=true; dis[x]=s; for (int i=head[x];i!=-1;i=nxt[i]) { int y=to[i]; //cout<<x<<" "<<y<<" "<<vis[y]<<endl; if (vis[y]) A[++sz]=dis[y]^s^w[i]; else Dfs(y,s^w[i]); } } void Guass() { for (int i=1;i<=sz;i++) { for (int j=62;j>=0;j--) { if ((A[i]>>j)&1) { if (!P[j]) {P[j]=A[i]; break;} else A[i]^=P[j]; } } } // for (int j=0;j<=62;j++) if (P[j]) r++; } int main() { //freopen("in.in","r",stdin); //freopen("out.out","w",stdout); int x,y; ll z; scanf("%d%d",&n,&m); memset(head,-1,sizeof(head)); for (int i=1;i<=m;i++) { scanf("%d%d%lld",&x,&y,&z); Add_Edge(x,y,z); Add_Edge(y,x,z); } Dfs(1,0); Guass(); ll ans = dis ; for(int i = 62; i >= 0; i--) ans = min(ans, ans ^ P[i]); printf("%lld\n", ans); return 0; }
相关文章推荐
- Codeforces 845G Shortest Path Problem?(异或最短路)
- CodeForces 845G
- Codeforces 845G Shortest Path Problem
- Codeforces 837E Vasya's Function:数论入门初步
- codeforces div2 #152 小结
- CodeForces 490
- CodeForces 538B Quasi Binary
- CodeForces - 589A(字符串)
- CodeForces - 808D(STL+思维)
- codeforces 204A Little Elephant and Interval
- Codeforces_round297_B.Pasha and String
- day4 CodeForces 27E Number With The Given Amount Of Divisors
- CodeForces - 148D Bag of mice 概率DP
- Codeforces 825E Minimal Labels - 拓扑排序 - 贪心
- CodeForces 1208 C. Text Editor BFS广搜
- Codeforces 30E Tricky and Clever Password Manacher + KMP + 前缀和
- CodeForces-629C-Famil Door and Brackets
- codeforces] #398(Div.2) B. The Queue [模拟]
- codeforces 651A Joysticks
- CodeForces 58C Trees