记录编号 386629 评测结果 EAWWAAEEEAEW
题目名称 聪明的推销员 最终得分 33
用户昵称 Gravatar玉带林中挂 是否通过 未通过
代码语言 C++ 运行时间 0.428 s
提交时间 2017-03-24 20:30:33 内存使用 34.90 MiB
显示代码纯文本
#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;
}