Submission #994881
Source Code Expand
#include<stdio.h>
#include<queue>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
int UF[210000];
//set<int>S[210000];
int FIND(int a){
if(UF[a]<0)return a;
return UF[a]=FIND(UF[a]);
}
int HP=5;
void UNION(int a,int b){
a=FIND(a);b=FIND(b);if(a==b)return;UF[a]+=UF[b];UF[b]=a;
}
vector<int>vis[210000];
int main(){
int a,b;scanf("%d%d",&a,&b);
priority_queue<pair<pair<int,int>,pair<int,int> > >Q;
for(int i=0;i<b;i++){
int s,t,u;
scanf("%d%d%d",&s,&t,&u);
Q.push(make_pair(make_pair(-u,HP),make_pair(s,t)));
Q.push(make_pair(make_pair(-u-1,HP),make_pair(t,(s+1)%a)));
}
long long ret=0;
for(int i=0;i<a;i++)UF[i]=-1;
while(Q.size()){
int cost=-Q.top().first.first;
int id=Q.top().first.second;
int L=Q.top().second.first;
int R=Q.top().second.second;
Q.pop();
// printf("%d %d %d\n",cost,L,R);
if(L==R){
// Q.push(make_pair(make_pair(-cost-2,id),make_pair((L+1)%a,(R+1)%a)));
continue;
}
if(FIND(L)==FIND(R)){
bool ok=true;
if(id==0)ok=false;
// for(set<int>::iterator it=S[L].begin();it!=S[L].end();it++){
// if(S[R].count(*it)){
// ok=false;break;
// }
// }
if(ok){
// S[L].insert(id);
// S[R].insert(id);
Q.push(make_pair(make_pair(-cost-2,id-1),make_pair((L+1)%a,(R+1)%a)));
}
continue;
}
// S[L].insert(id);
// S[R].insert(id);
UNION(L,R);
//printf("%d %d\n",L,R);
ret+=cost;
Q.push(make_pair(make_pair(-cost-2,HP),make_pair((L+1)%a,(R+1)%a)));
}
printf("%lld\n",ret);
}
Submission Info
Submission Time
2016-11-26 15:19:37+0900
Task
G - Zigzag MST
User
tozangezan
Language
C++14 (GCC 5.4.1)
Score
1300
Code Size
1565 Byte
Status
AC
Exec Time
709 ms
Memory
13420 KB
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:19:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
int a,b;scanf("%d%d",&a,&b);
^
./Main.cpp:23:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d%d",&s,&t,&u);
^
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
Case Name
Status
Exec Time
Memory
01-01.txt
AC
7 ms
5120 KB
01-02.txt
AC
273 ms
13420 KB
01-03.txt
AC
397 ms
13420 KB
01-04.txt
AC
14 ms
5888 KB
01-05.txt
AC
14 ms
5888 KB
01-06.txt
AC
18 ms
5888 KB
01-07.txt
AC
19 ms
5888 KB
01-08.txt
AC
27 ms
6016 KB
01-09.txt
AC
51 ms
6392 KB
01-10.txt
AC
230 ms
9328 KB
01-11.txt
AC
472 ms
13420 KB
01-12.txt
AC
446 ms
13420 KB
01-13.txt
AC
433 ms
13420 KB
01-14.txt
AC
431 ms
13420 KB
01-15.txt
AC
432 ms
13420 KB
01-16.txt
AC
431 ms
13420 KB
01-17.txt
AC
431 ms
13420 KB
01-18.txt
AC
230 ms
13420 KB
01-19.txt
AC
16 ms
5888 KB
01-20.txt
AC
39 ms
6016 KB
01-21.txt
AC
216 ms
7792 KB
01-22.txt
AC
699 ms
13420 KB
01-23.txt
AC
709 ms
13420 KB
01-24.txt
AC
26 ms
6392 KB
01-25.txt
AC
261 ms
13420 KB
01-26.txt
AC
15 ms
5888 KB
01-27.txt
AC
52 ms
6392 KB
01-28.txt
AC
418 ms
9964 KB
01-29.txt
AC
668 ms
13420 KB
01-30.txt
AC
695 ms
13420 KB
sample-01.txt
AC
7 ms
5120 KB
sample-02.txt
AC
7 ms
5120 KB
sample-03.txt
AC
7 ms
5120 KB