Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define maxm 1001
- #define ll long long
- #define pii pair<ll, ll>
- using namespace std;
- ll n, m, u, v, c, a, b;
- vector<pair<ll, ll> > g[maxm];
- priority_queue<pii, vector<pii>, greater<pii> > pq;
- ll beautifulPath() {
- vector<ll> dist(maxm, INT_MAX);
- vector<ll> vis(maxm, 0);
- dist[a] = 0;
- pq.push(make_pair(dist[a], a));
- while(!pq.empty()){
- ll x = pq.top().second;
- pq.pop();
- for(ll i=0; i<g[x].size(); ++i){
- ll y = g[x][i].second;
- ll d = g[x][i].first;
- if((d | dist[x]) < dist[y]){
- dist[y] = (d | dist[x]);
- pq.push(make_pair(dist[y], y));
- }
- }
- }
- if(dist[b] == INT_MAX)
- return -1;
- return dist[b];
- }
- int main()
- {
- cin>>n>>m;
- for(ll i=0; i<m; ++i){
- cin>>u>>v>>c;
- g[u].push_back(make_pair(c, v));
- g[v].push_back(make_pair(c, u));
- }
- cin>>a>>b;
- cout<<beautifulPath();
- return 0;
- }
Add Comment
Please, Sign In to add comment