Submission #6306780
Source Code Expand
#include<bits/stdc++.h>
#define ll long long
#define ljc 998244353
#define int long long
using namespace std;
/*
对kruskal算法的彻底理解。
A_i,B_i连接了C_i。
所以A_{i+1},B_i连接了C_i +1 等价于和这个连通块连接了C_i +1的边
(C_i<C_i +1) 所以此刻如果要连接这条边,A_i,B_i已经连接上了(必然)
所以等价于A_i A_{i+1} 连接了C_i +1,B_i B_{i+1} 连接了 C_i +2
设D数组表示 i 向后每一个点扩展连边,最小值为多少。
前缀最小值即可。做两遍。
D[i]=min(D[i],D[(i-1+n)%n]+2);
D[i]=min(D[i],D[(i-1+n)%n]+2);
*/
#ifdef Fading
#define gc getchar
#endif
#ifndef Fading
inline char gc(){
static char now[1<<16],*S,*T;
if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if (T==S) return EOF;}
return *S++;
}
#endif
inline ll read(){
register ll x=0,f=1;char ch=gc();
while (!isdigit(ch)){if(ch=='-')f=-1;ch=gc();}
while (isdigit(ch)){x=(x<<3)+(x<<1)+ch-'0';ch=gc();}
return (f==1)?x:-x;
}
struct edge{
int from,to,dis;
}g[10000001];
int F[2200001],tot,n,m;
int find(int u){
if (F[u]!=u) F[u]=find(F[u]);
return F[u];
}
inline void made(int a,int b,int c){
g[++tot].from=a;g[tot].to=b;g[tot].dis=c;
}
inline bool cmp(edge a,edge b){
return a.dis<b.dis;
}
int D[1000001];
signed main(){
n=read();m=read();
memset(D,0x3f,sizeof D);
for (int i=1;i<=m;i++){
int a=read(),b=read(),c=read();
made(a,b,c);
D[a]=min(D[a],c+1);
D[b]=min(D[b],c+2);
}
for (int i=0;i<n;i++) F[i]=i;
for (int i=0;i<n;i++) D[i]=min(D[i],D[(i-1+n)%n]+2);
for (int i=0;i<n;i++) D[i]=min(D[i],D[(i-1+n)%n]+2);
for (int i=0;i<n;i++){
made(i,(i+1)%n,D[i]);
}
sort(g+1,g+1+tot,cmp);
int ans=0;
for (int i=1;i<=tot;i++){
int u=g[i].from,v=g[i].to;
int uu=find(u),vv=find(v);
if (F[uu]!=vv){
F[uu]=vv;ans+=g[i].dis;
}
}
cout<<ans;
return 0;
}
Submission Info
Submission Time |
|
Task |
G - Zigzag MST |
User |
luogu_bot2 |
Language |
C++14 (GCC 5.4.1) |
Score |
1300 |
Code Size |
1932 Byte |
Status |
AC |
Exec Time |
104 ms |
Memory |
23936 KB |
Judge Result
Set Name |
sample |
all |
Score / Max Score |
0 / 0 |
1300 / 1300 |
Status |
|
|
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 |
4 ms |
10496 KB |
01-02.txt |
AC |
39 ms |
14592 KB |
01-03.txt |
AC |
81 ms |
20992 KB |
01-04.txt |
AC |
50 ms |
18944 KB |
01-05.txt |
AC |
35 ms |
17664 KB |
01-06.txt |
AC |
42 ms |
18176 KB |
01-07.txt |
AC |
36 ms |
17024 KB |
01-08.txt |
AC |
35 ms |
16768 KB |
01-09.txt |
AC |
38 ms |
16768 KB |
01-10.txt |
AC |
57 ms |
18688 KB |
01-11.txt |
AC |
61 ms |
18688 KB |
01-12.txt |
AC |
78 ms |
20736 KB |
01-13.txt |
AC |
79 ms |
20736 KB |
01-14.txt |
AC |
79 ms |
20736 KB |
01-15.txt |
AC |
81 ms |
20736 KB |
01-16.txt |
AC |
78 ms |
20864 KB |
01-17.txt |
AC |
79 ms |
20736 KB |
01-18.txt |
AC |
57 ms |
23936 KB |
01-19.txt |
AC |
36 ms |
16896 KB |
01-20.txt |
AC |
35 ms |
16640 KB |
01-21.txt |
AC |
48 ms |
18688 KB |
01-22.txt |
AC |
66 ms |
20736 KB |
01-23.txt |
AC |
67 ms |
20736 KB |
01-24.txt |
AC |
33 ms |
19840 KB |
01-25.txt |
AC |
104 ms |
23936 KB |
01-26.txt |
AC |
49 ms |
19200 KB |
01-27.txt |
AC |
42 ms |
18176 KB |
01-28.txt |
AC |
58 ms |
20224 KB |
01-29.txt |
AC |
57 ms |
19584 KB |
01-30.txt |
AC |
74 ms |
22272 KB |
sample-01.txt |
AC |
4 ms |
10496 KB |
sample-02.txt |
AC |
4 ms |
10496 KB |
sample-03.txt |
AC |
4 ms |
10496 KB |