标签:en int 南昌 len icpc vis 2019 include dis
英雄灭火问题忽略了一点丫
一个超级源点的事情,需要考虑周全丫
2
#include<cstdio> #include<cstring> #include<queue> #include<vector> #include<iostream> #include<algorithm> using namespace std; #define maxn 1010 #define INF 0x3f3f3f3f int T, n, m, s, k, c; struct Node { int p; int val; Node(int _p, int _val) :p(_p), val(_val) {} }; vector<Node>G[maxn]; void insert(int be, int en, int len) { G[be].push_back(Node(en, len)); } int dis[maxn]; int vis[maxn]; int spfa(int be) { queue<int>que; memset(vis, 0, sizeof(vis)); memset(dis, INF, sizeof(dis)); que.push(be); dis[be] = 0; while (!que.empty()) { int x = que.front(); que.pop(); vis[x] = 0; for (int i = 0; i < G[x].size(); i++) { int p = G[x][i].p; if (dis[p] > dis[x] + G[x][i].val) { dis[p] = dis[x] + G[x][i].val; if (!vis[p]) { que.push(p); vis[p] = 1; } } } } return 0; } int be, en, len; int main() { scanf("%d", &T); while (T--) { for (int i = 0; i < maxn - 2; i++) G[i].clear(); scanf("%d%d%d%d%d", &n, &m, &s, &k, &c); for (int i = 0; i < k; i++) { scanf("%d", &be); insert(0, be, 0); } for (int i = 0; i < m; i++) { scanf("%d %d %d", &be, &en, &len); insert(be, en, len); insert(en, be, len); } spfa(0); int ans1 = 0; for (int i = 1; i <= n; i++) { ans1 = max(ans1, dis[i]); } int ans2 = 0; spfa(s); for (int i = 1; i <= n; i++) { ans2 = max(ans2, dis[i]); } if (ans1*c >= ans2) printf("%d\n", ans2); else printf("%d\n", ans1); } return 0; }
我老婆
标签:en,int,南昌,len,icpc,vis,2019,include,dis 来源: https://www.cnblogs.com/lesning/p/11488675.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。