社区讨论
为什么不过?
P1875佳佳的魔法药水【数据有误】参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi5i54i3
- 此快照首次捕获于
- 2025/11/19 12:28 4 个月前
- 此快照最后确认于
- 2025/11/19 12:28 4 个月前
CPP
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
using namespace std;
int n,f[1001],a[1001][1001],c[1001],v[1001],x,y,z;
void work()
{
int u,t;
for (int i=1;i<=n;i++)
{
t=10000000;
u=-1;
for (int j=1;j<=n;j++)
if (v[i]==0 && c[j]<t)
{
u=j;
t=c[j];
}
if (u==-1)break;v[u]=1;
for (int j=1;j<=n;j++)
{
if (a[j][u]!=0)continue;
if (v[j]!=0)continue;
if (c[j]+t<c[a[j][u]])
{
c[a[j][u]]=t+c[j];
f[a[j][u]]=f[j]*f[u];
}
else if (c[j]+t==c[a[j][u]])
f[a[j][u]]+=f[j]*f[u];
}
}
}
int main()
{
freopen("msyrup.in","r",stdin);
freopen("msyrup.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++)
scanf("%d",&c[i]),f[i]=1;
while (scanf("%d%d%d",&x,&y,&z)!=EOF)
{a[x+1][y+1]=z+1;a[y+1][x+1]=z+1;}
work;
printf("%d %d",c[1],f[1]);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...