Submission #6426989
Source Code Expand
#include<bits/stdc++.h> using namespace std; typedef int ll; typedef long long int li; const ll MAXN=4e5+51; struct Edge{ ll from,to; li dist; inline bool operator <(const Edge &rhs)const { return this->dist<rhs.dist; } }; Edge ed[MAXN]; ll nc,cnt,x,y,z,tot; li dist[MAXN],boss[MAXN]; inline ll read() { register ll num=0,neg=1; register char ch=getchar(); while(!isdigit(ch)&&ch!='-') { ch=getchar(); } if(ch=='-') { neg=-1; ch=getchar(); } while(isdigit(ch)) { num=(num<<3)+(num<<1)+(ch-'0'); ch=getchar(); } return num*neg; } inline void setup(ll cnt) { for(register int i=0;i<cnt;i++) { boss[i]=i; } } inline void update() { for(register int i=0;i<nc;i++) { dist[i]=min(dist[i],dist[(i+nc-1)%nc]+2); } } inline ll findb(ll node) { if(node==boss[node]) { return node; } boss[node]=findb(boss[node]); return boss[node]; } inline void Union(ll x,ll y) { ll bx=findb(x),by=findb(y); if(bx!=by) { boss[by]=bx; } } inline ll Kruskal() { li res=0,k=0; sort(ed,ed+tot),setup(nc); for(register int i=0;k<nc-1;i++) { if(findb(ed[i].from)!=findb(ed[i].to)) { Union(ed[i].from,ed[i].to),res+=ed[i].dist,k++; } } return res; } int main() { nc=read(),cnt=read(),memset(dist,0x3f,sizeof(dist)); for(register int i=0;i<cnt;i++) { x=read(),y=read(),z=read(); ed[tot++]=(Edge){x,y,z}; dist[x]=min(dist[x],z+1),dist[y]=min(dist[y],z+2); } update(),update(); for(register int i=0;i<=nc;i++) { ed[tot++]=(Edge){i,(i+1)%nc,dist[i]}; } printf("%lld",Kruskal()); }
Submission Info
Submission Time | |
---|---|
Task | G - Zigzag MST |
User | luogu_bot1 |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1595 Byte |
Status | CE |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:88:26: error: no matching function for call to ‘min(li&, ll)’ dist[x]=min(dist[x],z+1),dist[y]=min(dist[y],z+2); ^ In file included from /usr/include/c++/5/bits/char_traits.h:39:0, from /usr/include/c++/5/ios:40, from /usr/include/c++/5/istream:38, from /usr/include/c++/5/sstream:38, from /usr/include/c++/5/complex:45, from /usr/include/c++/5/ccomplex:38, from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52, from ./Main.cpp:1: /usr/include/c++/5/bits/stl_algobase.h:195:5: note: candidate: template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&) min(const _Tp& __a, const _Tp& __b) ^ /usr/include/c++/5/bits/stl_algobase.h:195:5: note: template argument deduction/substitution failed: ./Main.cpp:88:26: note: deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ and ‘ll ...