Submission #6427043


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll MAXN=4e5+51;
struct Edge{
	ll from,to,dist;
	inline bool operator <(const Edge &rhs)const
	{
		return this->dist<rhs.dist;
	}
};
Edge ed[MAXN];
ll nc,cnt,x,y,z,tot;
ll 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()
{
	ll 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_bot2
Language C++14 (GCC 5.4.1)
Score 1300
Code Size 1574 Byte
Status AC
Exec Time 83 ms
Memory 15360 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 1300 / 1300
Status
AC × 3
AC × 36
Set Name Test Cases
sample sample-01.txt, sample-02.txt, sample-03.txt
all sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, sample-01.txt, sample-02.txt, sample-03.txt
Case Name Status Exec Time Memory
01-01.txt AC 3 ms 6400 KB
01-02.txt AC 40 ms 10496 KB
01-03.txt AC 76 ms 15360 KB
01-04.txt AC 26 ms 12032 KB
01-05.txt AC 19 ms 12032 KB
01-06.txt AC 22 ms 12032 KB
01-07.txt AC 21 ms 12032 KB
01-08.txt AC 20 ms 12032 KB
01-09.txt AC 22 ms 12032 KB
01-10.txt AC 47 ms 14080 KB
01-11.txt AC 62 ms 13312 KB
01-12.txt AC 79 ms 15360 KB
01-13.txt AC 78 ms 15360 KB
01-14.txt AC 75 ms 15360 KB
01-15.txt AC 75 ms 15360 KB
01-16.txt AC 75 ms 15360 KB
01-17.txt AC 73 ms 15360 KB
01-18.txt AC 64 ms 15360 KB
01-19.txt AC 20 ms 12032 KB
01-20.txt AC 20 ms 12032 KB
01-21.txt AC 32 ms 14080 KB
01-22.txt AC 62 ms 15360 KB
01-23.txt AC 61 ms 15360 KB
01-24.txt AC 20 ms 12032 KB
01-25.txt AC 83 ms 15360 KB
01-26.txt AC 26 ms 12032 KB
01-27.txt AC 25 ms 12032 KB
01-28.txt AC 53 ms 14080 KB
01-29.txt AC 62 ms 13440 KB
01-30.txt AC 74 ms 15360 KB
sample-01.txt AC 2 ms 6400 KB
sample-02.txt AC 3 ms 6400 KB
sample-03.txt AC 2 ms 6400 KB