问题标题: 酷町堂:2221 任务派遣 为什么死了?

0
0
已解决
黄俊博
黄俊博
资深光能
资深光能
#include<iostream>
using namespace std;

struct edge{
    int from,to;
    int cost;
};

edge es[10010];
char s[10010];
int d[10010];
int P,n;
bool flag;
int k;

void bellmanford(int s)
{
    for(int i=0;i<P;i++)d[i]=10000000;
    d[s]=0;
    int cnt=0; 
    while(true)
    {
        bool update=false;
        cnt++;
        for(int i=0;i<2*P;i++)
        {
            edge e=es[i];
            if(d[e.from]!=10000000 && d[e.to]>d[e.from]+e.cost)
            {
                d[e.to]=d[e.from]+e.cost;
                update=true;
            }   
        }
        if(!update)break;
        if(cnt>=P)
        {
            flag=true;
            break;
        }
    }
}

int main()
{
    char a,b,e;
    cin>>P;
    for(int i=1;i<=P;i++)
    {
        cin>>a>>b>>b>>e;
        if(a>='A' && a<='Z' && b>='a' && b<='z')
        {
            s[++n]=a;
            es[k++]=(edge){a,b,e};
        }
        else if(a>='a' && a<='z' && b>='A' && b<='Z')
        {
            s[++n]=b;
            es[k++]=(edge){a,b,e};
        }
    }
    int minv=10000000;
    char res;
    for(int i=1;i<=n;i++)
    {
        bellmanford(s[i]);
        if(d['Z']<minv)
        {
            minv=d['Z'];
            res=s[i];
        }
    }
    cout<<res<<" "<<minv;
    return 0;
}

 

2221任务派遣


0
已采纳
刘斐
刘斐
高级守护
高级守护

49行多输入了一个b

0
0
0
我要回答