首页 新闻 会员 周边

代码第16行 定义vis[]=1有什么意义?第43行dist[x]是指什么?

0
[待解决问题]

1 #include <iostream>
2 #include <queue>
3 #include <cstring>
4 using namespace std;
5 struct Edge{
6 int to;
7 int next;//与当前边起点一样的另一条边的位置
8 int v;
9 }edge[2006]; //链式向前星:每个节点存一条边;
10 int n=0,cur=0; //cur当前已有边的个数
11 int a[305],dist[306],vis[305],head[305],inq[305];
12 //head[i]以i为起点的边最大的编号
13 void addedge(int from,int to,int w)
14 {
15 edge[cur].next=head[from];
16 edge[cur].to=to;
17 edge[cur].v=w;//路径权值
18 head[from]=cur++;//当前节点变为头结点
19 }
20 void spfa()//求最长路
21 {
22 queue<int> q;
23 for(int i=0;i<n+1;++i)
24 {
25 q.push(i);
26 vis[i]=1;
27 dist[i]=0;
28 inq[i]=1;
29 }
30 while(!q.empty())
31 {
32 int x=q.front();
33 q.pop();
34 inq[x]++;
35 vis[x]=0;
36 if(inq[x]>n){//访问某一节点过多,存在正环,无解
37 cout<<"no answer"<<endl;
38 return ;
39 }
40 for(int i=head[x];i!=-1;i=edge[i].next)//遍历与该节点相连的各边
41 {
42 int nx=edge[i].to;
43 if(dist[nx]<dist[x]+edge[i].v)
44 {
45 dist[nx]=dist[x]+edge[i].v;
46 if(!vis[nx]){
47 vis[nx]=1;
48 q.push(nx);
49 }
50 }
51 }
52 }
53 return ;
54 }
55 int main()
56 { //解除cin cout 的绑定,提高输入输出效率;这个可以当模板记住,当然直接用scanf和print也可以。
57 ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
58 memset(head,-1,sizeof(head));//head 全部初始为-1
59 cin>>n;
60 for(int i=1;i<n+1;++i)
61 cin>> a[i];//第二天的菜价
62 for(int i=0;i<n-2;++i)
63 {
64 addedge(i+3,i,-(a[i+2]3+2));//从第一个三个相邻开始,直到最后一个三个三个相邻
65 addedge(i,i+3,a[i+2]
3);
66 }
67 //首末两个相邻,特殊处理
68 addedge(2,0,-(a[1]2+1));
69 addedge(0,2,a[1]
2); //首两个
70 addedge(n,n-2,-(a[n]2+1));
71 addedge(n-2,n,a[n]
2); //结尾两个
72 for(int i=1;i<n+1;++i)
73 {
74 addedge(i-1,i,1); //每个菜价都要大于1
75 }
76 spfa();
77 a[1]=dist[1];
78 for(int i=2;i<n+1;++i)
79 a[i]=dist[i]-dist[i-1];
80 cout<<a[1];
81 for(int i=2;i<n+1;++i)
82 cout<<' '<<a[i];
83 cout<<endl;
84 return 0;
85 }

YANGJJJJ的主页 YANGJJJJ | 初学一级 | 园豆:106
提问于:2020-05-23 22:23
< >
分享
所有回答(1)
0

大哥,求您代码格式化一下

//```c++
// your code
//```
czd890 | 园豆:14412 (专家六级) | 2020-05-23 23:43

怎么弄

支持(0) 反对(0) YANGJJJJ | 园豆:106 (初学一级) | 2020-05-24 06:58

刚刚加入

支持(0) 反对(0) YANGJJJJ | 园豆:106 (初学一级) | 2020-05-24 06:58

@EVER_GENERAL: 支持 markdown 语法

支持(0) 反对(0) dudu | 园豆:30994 (高人七级) | 2020-05-24 14:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册