제출 #1330318

#제출 시각아이디문제언어결과실행 시간메모리
1330318secondaccountmaybeIzbori (COCI22_izbori)C++20
0 / 110
289 ms589824 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
struct m
{
	vector<vector<ll>>a;
	m()
	{
		a.assign(n,vector<ll>(n,2e18));
	}
};
m f(m x,m y)
{
	m z;
	for(ll i=0;i<n;i++)
	{
		for(ll k=0;k<n;k++)
		{
			if(x.a[i][k]>1e18)
			{
			  continue;
			}
			for(ll j=0;j<n;j++)
			{
				if(y.a[k][j]>1e18)
				{
				  continue;
				}
				z.a[i][j]=min(z.a[i][j],x.a[i][k]+y.a[k][j]);
			}
		}
	}
	return z;
}
void f()
{
	ll e,k,q;
 cin>>n>>e;
	m b;
	for(ll i=0;i<n;i++)
	{
		b.a[i][i]=0;
	}
	for(ll i=0;i<e;i++)
	{
		ll u,v,w;
		cin>>u>>v>>w;
		u--;v--;
		b.a[u][v]=min(b.a[u][v],w);
	}
	cin>>k>>q;
	m r;
	for(ll i=0;i<n;i++)
	{
		r.a[i][i]=0;
	}
	while(k>0)
	{
		if(k&1)
		{
			r=f(r,b);
		}
		b=f(b,b);
		k>>=1;
	}
	for(ll i=0;i<q;i++)
	{
		ll s,d;
		cin>>s>>d;
		s--;d--;
		if(r.a[s][d]>1e18)
		{
			cout<<-1<<endl;
		}
		else
		{
			cout<<r.a[s][d]<<endl;
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	f();
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...