o南笙吖o


私信TA

用户名:uq_99586410949

访问量:517

签 名:

努力ing......

等  级
排  名 43916
经  验 297
参赛次数 0
文章发表 4
年  龄 12
在职情况 学生
学  校
专  业

  自我简介:

各位C++爱好者们大家好,我是打程序时长两年半的C++小菜,最喜欢singing,jumping,raping and C++。

TA的其他文章

解题思路:
暴力搜索加最优化剪枝
注意事项:不想填(滑稽)

参考代码:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int mid[10];
int n,m,q;
int E[10],F[10];
int x,y,z,d;
int lin[105],cnt;
struct str
{
    int next,y,z,d;
}e[10005];
void insertt()
{
    e[++cnt].y=y;
    e[cnt].next=lin[x];
    lin[x]=cnt;
    e[cnt].z=z;
    e[cnt].d=d;
}
int vis[105];
int ans,temp;
void work(int x)
{
    if(x==n-1)
    {
        ans=ans>temp?temp:ans;
        return ;
    }
    if(temp>=ans)return ;
    for(int i=lin[x];i;i=e[i].next)
    {
        if(!vis[e[i].y])
        {
            vis[e[i].y]=1;
            temp+=e[i].d;
            int tt=++mid[e[i].z];
            if(tt==2)temp+=E[e[i].z];
            else if(tt>2)temp+=F[e[i].z];
            work(e[i].y);
            if(tt==2)temp-=E[e[i].z];
            else if(tt>2)temp-=F[e[i].z];
            --mid[e[i].z];
            vis[e[i].y]=0;
            temp-=e[i].d;
        }
    }
}
int main()
{
    while(scanf("%d%d%d",&n,&m,&q)!=EOF)
    {
        cnt=0;
        memset(e,0,sizeof(e));
        memset(lin,0,sizeof(lin));
        memset(mid,0,sizeof(mid));
        memset(vis,0,sizeof(vis));
        for(int i=0;i<m;i++)
            scanf("%d",&E[i]);
        for(int i=0;i<m;i++)
            scanf("%d",&F[i]);
        for(int i=0;i<q;i++)
        {
            scanf("%d%d%d%d",&x,&y,&z,&d);
            insertt();
        }
        ans=2000000000;
        temp=0;
        work(0);
        printf("%d\n",ans);
    }
    return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

作者一般用万能头,偶尔会不用......
2022-11-06 14:45:42
  • «
  • 1
  • »