希望更丰富的展现?使用
# Markdown
by 影子鱼llt @ 2018-11-08 22:34:04
@[林乐天](/space/show?uid=71922)
不会诶大佬
大佬看得出来吗
by Flame丶 @ 2018-11-08 22:35:52
```
#include<queue>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<cmath>
#include<cstdio>
const long long inf=2147483647;
const int maxn=10005;
const int maxm=500005;
using namespace std;
int n,m,begin,end,cnt=0,d;
int dis[maxn],vis[maxn],head[maxm];
bool broke[505][505];
int f[5555],g[5555],w[5555];
struct Edge
{
int next;
int to;
int dis;
}edge[maxm];
void addedge(int from,int to,int dis)
{
edge[++cnt].next=head[from];
edge[cnt].to=to;
edge[cnt].dis=dis;
head[from]=cnt;
return ;
}
void spfa()
{
queue<int> q;
for(int i=1;i<=n;i++)
{
dis[i]=inf;
vis[i]=0;
}
q.push(begin);
dis[begin]=0;
vis[begin]=1;
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i;i=edge[i].next)
{
int v=edge[i].to;
if(dis[v]>dis[u]+edge[i].dis)
{
dis[v]=dis[u]+edge[i].dis;
if(vis[v]==0)
{
vis[v]=1;
q.push(v);
}
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;++i)
{
scanf("%d%d%d",&f[i],&g[i],&w[i]);
}
cin>>d;
for(int i=1;i<=d;++i)
{
cin>>n>>m;
broke[n][m]=1;
broke[m][n]=1;
}
for(int i=i;i<=m;++i)
{
if(broke[f[i]][g[i]]==0)
{
addedge(f[i],g[i],0);
addedge(g[i],f[i],0);
}
else
{
addedge(f[i],g[i],w[i]);
addedge(g[i],f[i],w[i]);
}
}
cin>>begin>>end;
spfa();
printf("%d",dis[end]);
return 0;
}
```
by 影子鱼llt @ 2018-11-09 10:18:15