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 ...