比赛 20160923 评测结果 WWWWWWWWW
题目名称 道路重建 最终得分 0
用户昵称 123 运行时间 0.008 s
代码语言 C++ 内存使用 0.62 MiB
提交时间 2016-09-23 21:39:52
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a,b,k,j,z[10000]={0},x[10000]={0},v[10000]={0},w,p[1000]={0},ji[1000]={0};
class qw{
	public:int x,y,o;
 
	};
	qw lu[150][150]={0};
int er(int r,int y){
	int c,g;
	w=1;
	for(;r<y;)
	{
		for (c=1;c<=a;c++)
		{
			if(lu[z[r]][c].x!=0&&p[c]!=1)
			{
				z[y]=c;
				y++;
				p[c]=1;
				x[c]=x[r]+lu[z[r]][c].y;
				if(lu[z[r]][c].o==1)
				{
					v[w]=v[w]+1;
				}
				if(c==j)
				{
					ji[w]=x[c];
					w++;
				}
			}
		}
		r++;
	}
}
int main(){
	freopen ("rebuild.in","r",stdin);
	freopen ("rebuild.out","w",stdout);
	int c,d,e,f,u,h,i,as;
	cin>>a>>b;
	for (c=1;c<=b;c++)
	{
		cin>>d>>e>>f;
		lu[d][e].x=1;
		lu[d][e].y=f;
	}
	cin>>u;
	for (c=1;c<=u;c++)
	{
		cin>>d>>e;
		lu[d][e].o=1;
	}
	cin>>k>>j;
	z[1]=k;
	x[1]=0;
	p[k]=1;
	er(1,2);
	i=99999999;
	as=9999999;
	for (h=1;h<=w-1;h++)
	{
		if(ji[h]<i)
		{
			i=ji[h];
			as=v[h];
		}
		if(ji[h]=i&&as>v[h])
		{
			as=v[h];
		}
	}
	cout<<as;
	return 0;
}