推导部分和(图论)
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5 + 10; int n, m, q; struct edge { int v; ll w; edge(){} edge(int v, ll w):v(v), w(w){} }; vector<edge>Map[maxn]; ll sum[maxn]; int color[maxn]; //从u出发,当前距离为d,当前连通块编号为 now_color void dfs(int u, ll d, int now_color) { color[u] = now_color; sum[u] = d; for(auto x : Map[u]) { int v = x.v; ll w = x.w; if(color[v])continue; dfs(v, d + w, now_color); } } int main() { cin >> n >> m >> q; for(int i = 1; i <= m; i++) { int l, r; ll s; cin >> l >> r >> s; //建图 l--; Map[l].push_back(edge(r, s)); Map[r].push_back(edge(l, -s)); } int cnt = 0;//cnt表示连通块编号 //每个连通块直接dfs for(int i = 0; i <= n; i++)if(color[i] == 0) dfs(i, 0, ++cnt); while(q--) { int l, r; cin >> l >> r; l--; if(color[l] != color[r])cout<<"UNKNOWN"<<endl; else cout<<sum[r] - sum[l]<<endl; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】