记录编号 |
386629 |
评测结果 |
EAWWAAEEEAEW |
题目名称 |
聪明的推销员 |
最终得分 |
33 |
用户昵称 |
玉带林中挂 |
是否通过 |
未通过 |
代码语言 |
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;
}