?
# | Author | Problem | Lang | Verdict | Time | Memory | Sent | Judged | |
---|---|---|---|---|---|---|---|---|---|
188564596 |
Practice: DaiRuiChen007 |
1486E - 53 | C++14 (GCC 6-32) | Accepted | 3931 ms | 402244 KB | 2023-01-09 12:19:14 | 2023-01-09 12:19:14 |
// LUOGU_RID: 99148906 #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; const int MAXN=1e5+1; struct node { int des,val; }; vector <node> G[MAXN*51]; int dis[MAXN*51]; bool vis[MAXN*51]; signed main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=m;++i) { int u,v,w; scanf("%d%d%d",&u,&v,&w); G[u].push_back((node){n*w+v,0}); G[v].push_back((node){n*w+u,0}); for(int k=1;k<=50;++k) { G[n*k+u].push_back((node){v,(k+w)*(k+w)}); G[n*k+v].push_back((node){u,(k+w)*(k+w)}); } } priority_queue <pii,vector<pii>,greater<pii> > q; memset(dis,0x3f,sizeof(dis)); dis[1]=0,q.push(make_pair(dis[1],1)); while(!q.empty()) { int p=q.top().second; q.pop(); if(vis[p]) continue; vis[p]=true; for(auto e:G[p]) { int v=e.des,w=e.val; if(dis[v]>dis[p]+w) { dis[v]=dis[p]+w; q.push(make_pair(dis[v],v)); } } } for(int i=1;i<=n;++i) printf("%d ",vis[i]?dis[i]:-1); return 0; }
?
?
?
?