제출 #114757

#제출 시각아이디문제언어결과실행 시간메모리
114757faustaadpSimurgh (IOI17_simurgh)C++17
30 / 100
109 ms3596 KiB
#include "simurgh.h"
#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
ll n,m,p[550],i,tim;
ll X[125050];
ll Y[125050];
ll b[125050];
vector<int> r;
vector<pair<ll,ll> > isi;
ll car(ll aa)
{
	if(p[aa]==aa)
		return aa;
	else
		return p[aa]=car(p[aa]);
}
void cek(ll aa)
{
	vector<int> tan;
	ll ii;
	for(ii=0;ii<n;ii++)p[ii]=ii;
	for(ii=0;ii<r.size();ii++)
		if(ii!=aa)
		{
			p[car(X[r[ii]])]=car(Y[r[ii]]);
			tan.pb(r[ii]);
		}
	ll mi=tim,ya=0;
	for(ii=0;ii<m;ii++)
		if(car(X[ii])!=car(Y[ii]))
		{
	//		cout<<aa<<" "<<ii<<"\n";
//			if(r[aa]==ii)
//				continue;
			b[ii]=1;
			tan.pb(ii);
			ll tom=count_common_roads(tan);
			isi.pb(mp(-tom,ii));
			mi=min(mi,tom);
			tan.pop_back();
			if(tom>mi)
			{
	//			ya=1;
				break;
			}
		}
//	cout<<aa<<" "<<ya<<"\n";
	//if(!ya)
	//	return ;
	if(isi.empty())
		return ;
	sort(isi.begin(),isi.end());
	r[aa]=isi[0].se;
	tim=-isi[0].fi;
}
std::vector<int> find_roads(int N, std::vector<int> U, std::vector<int> V) 
{
	n=N;
	m=U.size();
	for(i=0;i<m;i++)
		X[i]=U[i];
	for(i=0;i<m;i++)
		Y[i]=V[i];
	for(i=0;i<n;i++)p[i]=i;
	for(i=0;i<m;i++)
		if(car(U[i])!=car(V[i]))
		{
			p[car(U[i])]=car(V[i]);
			r.pb(i);
		}
	//while(1);
	tim=count_common_roads(r);
	for(i=0;i<r.size();i++)
	{
		isi.clear();
		cek(i);
		//cout<<i<<" "<<r[i]<<"\n";
	}
	//for(i=0;i<r.size();i++)
	return r;
}

컴파일 시 표준 에러 (stderr) 메시지

simurgh.cpp: In function 'void cek(ll)':
simurgh.cpp:27:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(ii=0;ii<r.size();ii++)
           ~~^~~~~~~~~
simurgh.cpp:33:12: warning: unused variable 'ya' [-Wunused-variable]
  ll mi=tim,ya=0;
            ^~
simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:78:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<r.size();i++)
          ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...