比赛 |
NOIP模拟赛by mzx Day1 |
评测结果 |
EEEEEEEEEE |
题目名称 |
零食店 |
最终得分 |
0 |
用户昵称 |
森林 |
运行时间 |
1.309 s |
代码语言 |
C++ |
内存使用 |
0.55 MiB |
提交时间 |
2016-10-19 21:40:55 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
const int maxn=110;
struct E{
int to,next,w;
};E e[11000<<1];
int val[maxn],head[maxn],len=0;
int dist[maxn][maxn];
int n;
inline void add(const int& from,const int& to,const int& w){
e[++len].to=to;
e[len].w=w;
e[len].next=head[from];
head[from]=len;
}
#include<queue>
int dis[maxn];
struct node{
int id,dist;
node(int a=0,int b=0){id=a;dist=b;}
bool operator<(const node& a)const{
return dist>a.dist;
}
}u;
priority_queue<node>q;
inline void djs(const int& x){
dis[x]=0;
q.push(node(x,0));
while(!q.empty()){
u=q.top();q.pop();
for(int i=head[u.id];i!=-1;i=e[i].next){
if(u.dist+e[i].w<dis[e[i].to]){
dis[e[i].to]=u.dist+e[i].w;
q.push(node(e[i].to,dis[e[i].to]));
}
}
}
}
int main(){
#define submit
#ifdef submit
freopen("snackstore.in","r",stdin);
freopen("snackstore.out","w",stdout);
#endif
int m,q,a,b,c;
memset(head,-1,sizeof head);
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;++i){
scanf("%d",&val[i]);
}
for(int i=1;i<=m;++i){
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
while(q--){
scanf("%d%d%d",&a,&b,&c);
djs(a);
cout<<dis[b]<<endl;
}
#ifdef submit
fclose(stdin);
fclose(stdout);
#else
system("pause");
#endif
return 0;
}