比赛 聪明的工作员 评测结果 EAWWAAEEEAEW
题目名称 聪明的推销员 最终得分 33
用户昵称 东林桂香 运行时间 0.348 s
代码语言 C++ 内存使用 34.90 MiB
提交时间 2017-03-21 20:10:33
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
int n,p,r;
long long int spend=0;
int a[3010];
int b[3010][3010];
int bi[3010]={0};
int ex;//储存例外 
int main()
{
	freopen("salenet.in","r",stdin);
	freopen("salenet.out","w",stdout);
	scanf("%d%d",&n,&p);
	int v=n;
	for(int i=1;i<=p;i++)
	{
		int x,ti;
		scanf("%d%d",&x,&ti);
	    a[x]=1;
	    spend+=ti;
	    v--;
	}
	scanf("%d",&r);
	for(int i=1;i<=r;i++)
	{ 
		scanf("%d%d",&b[i][1],&b[i][2]);
		if(a[b[i][1]]==1)
		{
		   a[b[i][2]]=1;
		   v--;
		}
	}
	for(int j=1;j<=v;j++)
	{
		for(int i=1;i<=n;i++)
		{                   //查询没有联系的客户
		  if(a[i]==0)
		  {
			for(int i=1;i<=r;i++)
			{
				if(a[i]==b[i][2])
				{
					if(a[b[i][1]]==1)a[i]=1;
				}
			}
		  } 
	    }
    }  
	int ok=1;                   //判断是否可以建立 
	for(int i=1;i<=n;i++)        
	{
		if(a[i]==0){
			ok=0;
			ex=i;
			break;
		}
	}
	if(ok)
	{
		printf("YES");
		printf("\n"); 
		printf("%d",spend);
	}
	else{
		printf("NO");
		printf("\n");
		printf("%d",ex);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}