Submission #993221


Source Code Expand

#include<stdio.h>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
#define SIZE 200000
class unionfind
{
public:
	int par[SIZE];
	int ran[SIZE];
	int ren[SIZE];
	void init()
	{
		for(int i=0;i<SIZE;i++)
		{
			par[i]=i;
			ran[i]=0;
			ren[i]=1;
		}
	}
	int find(int a)
	{
		if(a==par[a])return a;
		else return par[a]=find(par[a]);
	}
	void unite(int a,int b)
	{
		a=find(a);
		b=find(b);
		if(a==b)return;
		if(ran[a]>ran[b])
		{
			par[b]=a;
			ren[a]+=ren[b];
		}
		else
		{
			par[a]=b;
			ren[b]+=ren[a];
		}
		if(ran[a]==ran[b])ran[b]++;
	}
};
unionfind uf;
typedef long long ll;
typedef pair<ll,ll>pii;
map<ll,vector<pii> >ma;
int main()
{
	uf.init();
	int num,query;
	scanf("%d%d",&num,&query);
	for(int i=0;i<query;i++)
	{
		int za,zb,zc;
		scanf("%d%d%d",&za,&zb,&zc);
		ma[zc].push_back(make_pair(za,zb));
		ma[zc+1].push_back(make_pair((za+1)%num,zb));
		ma[zc+2].push_back(make_pair((za+1)%num,(zb+1)%num));
		ma[zc+3].push_back(make_pair((za+2)%num,(zb+1)%num));
	}
	map<ll,vector<pii> >::iterator it=ma.begin();
	ll ret=0;
	for(;;)
	{
		if(it==ma.end())break;
		pair<ll,vector<pii> >z=*it;
		it++;
		for(int i=0;i<z.second.size();i++)
		{
			if(uf.find(z.second[i].first)!=uf.find(z.second[i].second))
			{
				uf.unite(z.second[i].first,z.second[i].second);
				ma[z.first+2].push_back(make_pair((z.second[i].first+1)%num,(z.second[i].second+1)%num));
				ma[z.first+4].push_back(make_pair((z.second[i].first+2)%num,(z.second[i].second+2)%num));
				ret+=z.first;
			}
		}
	}
	printf("%lld\n",ret);
}

Submission Info

Submission Time
Task G - Zigzag MST
User DEGwer
Language C++14 (GCC 5.4.1)
Score 1300
Code Size 1621 Byte
Status AC
Exec Time 795 ms
Memory 105216 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:53:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&num,&query);
                           ^
./Main.cpp:57:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d",&za,&zb,&zc);
                              ^

Judge Result

Set Name sample all
Score / Max Score 0 / 0 1300 / 1300
Status
AC × 3
AC × 33
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 5 ms 2560 KB
01-02.txt AC 682 ms 89984 KB
01-03.txt AC 795 ms 105216 KB
01-04.txt AC 200 ms 27520 KB
01-05.txt AC 183 ms 26624 KB
01-06.txt AC 144 ms 24320 KB
01-07.txt AC 75 ms 16384 KB
01-08.txt AC 62 ms 14464 KB
01-09.txt AC 81 ms 16384 KB
01-10.txt AC 339 ms 42112 KB
01-11.txt AC 494 ms 44032 KB
01-12.txt AC 637 ms 59648 KB
01-13.txt AC 634 ms 59776 KB
01-14.txt AC 632 ms 59904 KB
01-15.txt AC 620 ms 60160 KB
01-16.txt AC 643 ms 59776 KB
01-17.txt AC 621 ms 59904 KB
01-18.txt AC 292 ms 40060 KB
01-19.txt AC 93 ms 18944 KB
01-20.txt AC 37 ms 9856 KB
01-21.txt AC 69 ms 15936 KB
01-22.txt AC 150 ms 30968 KB
01-23.txt AC 150 ms 30968 KB
01-24.txt AC 207 ms 29440 KB
01-25.txt AC 651 ms 68224 KB
01-26.txt AC 111 ms 18176 KB
01-27.txt AC 107 ms 19064 KB
01-28.txt AC 184 ms 26080 KB
01-29.txt AC 161 ms 24056 KB
01-30.txt AC 218 ms 31164 KB
sample-01.txt AC 5 ms 2560 KB
sample-02.txt AC 5 ms 2560 KB
sample-03.txt AC 5 ms 2560 KB