hdu1224

来源:互联网 发布:无敌淘宝网下载 编辑:程序博客网 时间:2024/06/07 13:04

水题~

#include <iostream>#include <queue>using namespace std;int map[105][105];int v[105];int dis[105];int path[105];int n;void longpath(){    queue <int> a;    a.push(1);    while (!a.empty())    {        int cur=a.front();        a.pop();        for (int i=1;i<=n+1;i++)        {            if (map[cur][i])            {                if (dis[cur]+v[i]>dis[i])                {                    dis[i]=dis[cur]+v[i];                    a.push(i);                    path[i]=cur;                }            }        }    }}int main(){    int r;    cin>>r;    for (int t=1;t<=r;t++)    {        memset(dis,0,sizeof(dis));        memset(v,0,sizeof(v));        memset(map,0,sizeof(map));        memset(path,0,sizeof(path));        cin>>n;        for (int i=1;i<=n;i++)            cin>>v[i];        v[n+1]=0;        int m;        cin>>m;        int a,b;        for (int i=1;i<=m;i++)        {            cin>>a>>b;            map[a][b]=1;        }        longpath();        cout<<"CASE "<<t<<"#"<<endl;        cout<<"points : "<<dis[n+1]<<endl;        int p[105];        int count;        int cur=n+1;        for (count=0;path[cur]!=1;count++)        {            p[count]=path[cur];            cur=path[cur];        }        cout<<"circuit : "<<1;        for (int i=count-1;i>=0;i--)            cout<<"->"<<p[i];        cout<<"->"<<1<<endl;        if (t<r)            cout<<endl;    }}


原创粉丝点击