前言
好水。。 ,算是基础题了 传送门 :
思路因为需要拿了之后又回去,因此我们还需要统计一遍
走回去的最小开销,但是其实没必要都跑一遍
我们只需要建立一个反图即可
CODEstruct node
{
int to,val;
};
vector g[N],ung[N];
int dist[N],undist[N];
int st[N],unst[N];
void spfa()
{
memset(dist,0x3f,sizeof dist);
dist[1] = 0 ;
st[1] = 1;
queue q;
q.push(1);
while(!q.empty() )
{
int t = q.front();
q.pop();
st[t] =false;
for(auto j:g[t])
{
if(dist[j.to] > dist[t] + j.val)
{
dist[j.to] =dist[t] +j.val;
if(!st[j.to])
{
q.push(j.to);
st[j.to] = true;
}
}
}
}
}
void spfa2()
{
memset(undist,0x3f,sizeof undist);
undist[1] = 0;
unst[1] = 1;
queue unq;
unq.push(1);
while(!unq.empty())
{
int t =unq.front();
unq.pop();
unst[t] =false;
for(auto j:ung[t])
{
if(undist[j.to] > undist[t] + j.val)
{
undist[j.to] = undist[t] +j.val;
if(!unst[j.to])
{
unq.push(j.to);
unst[j.to] = true;
}
}
}
}
}
int n,m,t;
void solve()
{
cin>>n>>m;
while(m -- )
{
int a,b,w;
cin>>a>>b>>w;
g[a].push_back({b,w});
ung[b].push_back({a,w});
}
spfa();
spfa2();
ll sum = 0 ;
for(int i=1; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?