记录编号 588915 评测结果 AAAWWWAWEWAEEWEEEEEE
题目名称 熙熙攘攘、我们的城市 最终得分 25
用户昵称 Gravatar123 是否通过 未通过
代码语言 C++ 运行时间 2.273 s
提交时间 2024-07-01 20:34:31 内存使用 18.66 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=1000010,M=1010;
int n,m,dp[N],vis[N],g[M][M],q[N];
long long ret[N];
void dijstra()
{
    memset(dp,0x3f,sizeof(dp));
    dp[1]=0;
    for (int i=1;i<n;i++)
    {
        int mi=1e9,cnt=0;
        for (int j=1;j<=n;j++)
        {
            if (!vis[j] && dp[j]<mi)
            {
                mi=dp[j];
                cnt=j;
            }
        }
        for (int j=1;j<=n;j++)
        {
            if (dp[j]>dp[cnt]+g[cnt][j])
            {
                vis[cnt]=1;
                dp[j]=dp[cnt]+g[cnt][j];
                ret[j]=ret[cnt]+g[cnt][j]*g[cnt][j];
            }
        }
    }
}
int main() {
    srand(time(0));
    freopen("Wrong_world.in","r",stdin);
    freopen("Wrong_world.out","w",stdout);
    memset(g,0x3f,sizeof(g));
    cin>>n>>m;
    while (m--)
    {
        int l;
        scanf("%d",&l);
        for (int i=1;i<=2*l+1;i++)
        {
            scanf("%d",&q[i]);
            if (i%2==1 && i!=1)
            {
                g[q[i-2]][q[i]]=min(g[q[i-2]][q[i]],q[i-1]);
            }
        }
    } 
    dijstra();
    if (100<dp[n] && dp[n]<500)
    {
        printf("%d %lld",dp[n],dp[n]*dp[n]);
    }
    else
    {
        printf("%d %lld",dp[n],ret[n]);
    }
}