ABC E题求改
  • 板块学术版
  • 楼主code_hyx
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/1/22 10:11
  • 上次更新2023/10/24 03:21:26
查看原帖
ABC E题求改
530797
code_hyx楼主2023/1/22 10:11
#include<bits/stdc++.h>
using namespace std;
long long n,a[305],q;
long long mapp[605][605],dian_mapp[605][605];
void floyd()
{
    for(int k=1;k<=n*2;k++)
    {
        for(int i=1;i<=n*2;i++)
        {
            for(int j=1;j<=n*2;j++)
            {
                if(mapp[i][j]>=mapp[i][k]+mapp[k][j])
                {
                    mapp[i][j]=mapp[i][k]+mapp[k][j];
                    dian_mapp[i][j]=max(dian_mapp[i][k]+dian_mapp[k][j],dian_mapp[i][j]);
                }
            }
        }
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=602;i++)
    {
        for(int j=1;j<=602;j++)
        {
            if(i==j)
            {
                mapp[i][j]=0;
                dian_mapp[i][j]=0;
            }
            else
            {
                mapp[i][j]=0x3f3f3f3f3f3f3f3f;
                dian_mapp[i][j]=0;
            }
        } 
    } 
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        //dian_mapp[i][n+1]=a[i];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            char ch;
            cin>>ch;
            if(ch=='Y')
            {
                dian_mapp[i][j]=a[i];
                mapp[i][j]=1;
            }
        } 
    } 
    floyd();
    cin>>q;
    while(q--)
    {
        int x,y;
        cin>>x>>y;
        if(mapp[x][y]==0x3f3f3f3f3f3f3f3f)cout<<"Impossible\n";
        else
        {
            cout<<mapp[x][y]<<" "<<dian_mapp[x][y]+a[y]<<"\n";
        }
    }
    return 0;
}

AC 29个
WA 17个
样例过了,真的找不出问题了

2023/1/22 10:11
加载中...