dijstra

wangkangyou 2022-08-03 8:09:46 26 返回题目

#include<bits/stdc++.h>
#define int long long
using namespace std;
int read(){
	int sum=0,f=1;
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
	for(;isdigit(ch);ch=getchar()) sum=(sum<<3)+(sum<<1)+(ch^48);
	return sum*f;
}
void write(int x){
	if(x<0) x=-x,putchar('-');
	if(x>9) write(x/10);
	putchar('0'+x%10);
	return;
}
vector<pair<int,int> > g[10001];
int dis[100001];
priority_queue<pair<int,int> > pq;
signed main(){
	int a=read(),b=read();
	g[1].push_back(make_pair(2,a));
	g[2].push_back(make_pair(3,b));
	for(int i=1;i<=1e4;i++) dis[i]=INT_MAX;
	dis[1]=0;
	pq.push(make_pair(dis[1],1));
	while(!pq.empty()){
		int u=pq.top().second,s=pq.top().first;
		pq.pop();
		for(int i=0;i<g[u].size();i++){
			int v=g[u][i].first;
			int w=g[u][i].second;
			if(dis[v]>dis[u]+w){
				dis[v]=dis[u]+w;
				pq.push(make_pair(dis[v],v));
			}
		}
	}
//	for(int i=1;i<=10;i++) cout<<dis[i]<<" ";
	write(dis[3]);
	return 0;
}
{{ vote && vote.total.up }}