2 条题解
-
1
#include<bits/stdc++.h> using namespace std; int n,k,m,s,t,u,v,d,flag,flag2,cnt; int c[105],h[105][105],p[105][105],sum[105],bag[105]; int dfs(int l,int dis){ if(dis>=sum[l])return 0; sum[l]=dis; if(l==t){ flag=1; return 0; } for(int i=1;i<=n;i++){ if(p[l][i]>0){ flag2=1; for(int j=1;j<=cnt;j++)if(h[c[i]][bag[j]]==1||c[i]==bag[j])flag2=0; if(flag2==1){ cnt++;bag[cnt]=c[i]; dfs(i,dis+p[l][i]); cnt--; } } } return 0; } int main(){ for(int i=1;i<=100;i++)sum[i]=100000000; cin>>n>>k>>m>>s>>t; for(int i=1;i<=n;i++)cin>>c[i]; for(int i=1;i<=k;i++)for(int j=1;j<=k;j++)cin>>h[i][j]; for(int i=1;i<=m;i++){ cin>>u>>v>>d; if(u>v)swap(u,v); if(p[u][v]==0||d<p[u][v])p[u][v]=d; p[v][u]=d; } cnt=1;bag[1]=c[s]; dfs(s,0); if(flag==1)cout<<sum[t]<<endl; else cout<<-1<<endl; return 0; }
-
-9
写题解请注意
鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 1498
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 31
- 已通过
- 15
- 上传者