diff --git a/3108. Minimum Cost Walk in Weighted Graph b/3108. Minimum Cost Walk in Weighted Graph new file mode 100644 index 0000000..e39a4bb --- /dev/null +++ b/3108. Minimum Cost Walk in Weighted Graph @@ -0,0 +1,47 @@ +class Solution { + private: + int getcmpcost(int node, vector>>&adj,vector&vis,vector&cmp,int cid){ + queueq; + int ccost=INT_MAX; + q.push(node); + vis[node]=1; + while(!q.empty()){ + int Node=q.front(); + q.pop(); + cmp[Node]=cid; + for(auto [nbr,w]:adj[Node]){ + ccost&=w; + if(vis[nbr])continue; + vis[nbr]=1; + q.push(nbr); + } + } + return ccost; + } +public: + vector minimumCost(int n, vector>& edges, vector>& query) { + vector>>adj(n); + for(auto ele:edges){ + adj[ele[0]].push_back({ele[1],ele[2]}); + adj[ele[1]].push_back({ele[0],ele[2]}); + } + vectorvis(n,0); + vectorcmp(n); + vectorcmpcost; + int cid=0; + for(int node=0;nodeans; + for(auto q:query){ + int s=q[0]; + int e=q[1]; + if(cmp[s]==cmp[e])ans.push_back(cmpcost[cmp[s]]); + else ans.push_back(-1); + } + return ans; + } +};