比赛 |
NOIP模拟赛by mzx Day1 |
评测结果 |
WWWWWWWTTT |
题目名称 |
零食店 |
最终得分 |
0 |
用户昵称 |
iortheir |
运行时间 |
3.217 s |
代码语言 |
C++ |
内存使用 |
3.86 MiB |
提交时间 |
2016-10-19 21:18:34 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
const int INF = 987654321;
const int maxn = 100 + 10;
const int maxm = 10000 + 10;
const int maxq = 1000000 + 10;
int n;
int m;
int q;
int x[maxm];
int y[maxm];
int l[maxm];
int s;
int c;
int d;
int val[maxn];
int ans[maxq];
int A[maxn][maxn];
int vis[maxn];
int dis[maxn];
int kount = 0;
inline int bfs(int x)
{
queue<int >q;
vis[x]=1;
dis[x]=0;
q.push(x);
while(!q.empty())
{
int t = q.front();
q.pop();
for(int h=1;h<=n;h++)
{
if(!vis[h]&&A[t][h]!=INF)
{
vis[h]=1;
q.push(h);
dis[h]=dis[t]+A[t][h];
kount++;
if(dis[h]>d)
{
return 0;
}
}
}
}
cout<<kount;
}
int main()
{
freopen("snackstore.in","r",stdin);
freopen("snackstore.out","w",stdout);
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&val[i]);
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
A[i][j] = INF;
}
}
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x[i],&y[i],&l[i]);
A[x[i]][y[i]] = l[i];
A[y[i]][x[i]] = l[i];
for(int j=1;j<=m;j++)
{
if(i!=j&&x[i]==x[j]&&y[i]==y[j])
{
if(l[i]<l[j])
{
A[x[i]][y[i]] = l[i];
}
else
{
A[x[i]][y[i]] = l[j];
}
}
}
}
for(int i=1;i<=q;i++)
{
scanf("%d%d%d",&s,&c,&d);
for(int j=1;j<=n;j++)
{
if(val[j]>c)
{
for(int k=1;k<=n;k++)
{
A[j][k] = INF;
}
}
}
bfs(s);
//cout<<kount;
}
return 0;
}