当前位置: 首页 > news >正文

50.topodijkstra

拓扑排序

# include<iostream>
# include<cstring>
using namespace std;

const int N=10000;

int topoq[N];
int n,m;
int d[N]={0};
int e[N],ne[N],h[N],idx=0;

void add(int a,int b){
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}

bool toposort(){
    int hh=0,tt=-1;
    for(int i=1;i<=n;i++)
        if(!d[i])
            topoq[++tt]=i;
    
    while(hh<=tt){
        int t=topoq[hh++];

        for(int i=h[t];i!=-1;i=ne[i]){
            int j=e[i];
            if(--d[j]==0)
                topoq[++tt]=j;
        }
    }
    return tt==n-1;
}

int main(){
    memset(h,-1,sizeof h);
    cin>>n>>m;
    for(int i=0;i<m;i++){
        int s,t;
        scanf("%d%d",&s,&t);
        add(s+1,t+1);
        d[t+1]++;
    }
    if(toposort()){
        for(int i=0;i<n;i++){
            printf("%d",topoq[i]-1);
            if(i!=n-1)printf(" ");
        }
    }else{
        cout<<-1;
    }
    return 0;
}

dijkstra

# include<iostream>
# include<cstring>
# define INF 0x3f3f3f3f;
using namespace std;
const int N=510;
int g[N][N];
int dist[N];
bool st[N];
int n,m;

int dijkstra(){
    memset(dist,0x3f,sizeof dist);
    dist[1]=0;
    for(int i=0;i<n-1;i++){
        int t=-1;
        for(int j=1;j<n;j++){
            if(!st[j]&&(t==-1||dist[j]<dist[t])){
                t=j;
            }
        }

        for(int j=1;j<=n;j++){
            dist[j]=min(dist[j],dist[t]+g[t][j]);
            st[t]=true;
        }
    }
    if(dist[n]==0x3f3f3f3f) return -1;
    return dist[n];
}

int main(){
    memset(g,0x3f,sizeof g);
    cin>>n>>m;
    for(int i=0;i<m;i++){
        int s,t,w;
        scanf("%d%d%d",&s,&t,&w);
        g[s][t]=w;
    }
    cout<<dijkstra();
}

相关文章:

  • Python Grpc安装protoc-gen-js并执行 grpc-web生成py文件
  • 【翻译】OmniSQL——大规模生成高质量文本转SQL数据
  • 002射影几何
  • 力扣刷题79. 单词搜索
  • 基于MCU实现的电机转速精确控制方案:软件设计与实现
  • 电机控制常见面试问题(二十)
  • 推荐一款好看的 vue3 后台模板
  • 《STL 六大组件之容器探秘:深入剖析 vector》
  • Python | 计算散度
  • TF-IDF算法
  • scss预处理器对比css的优点以及基本的使用
  • 瑞盟MS35774/MS35774A低噪声 256 细分微步进电机驱动
  • 【动态规划】最长公共子序列问题 C++
  • 深入理解与使用 HashedWheelTimer:高效的时间轮定时器
  • python argparse 参数使用详解记录
  • Qt 制作验证码
  • SQL语句---特殊查询
  • 递归,搜索,回溯算法(一)
  • 多版本PHP开发环境配置教程:WAMPServer下MySQL/Apache/MariaDB版本安装与切换
  • ubuntu下docker 安装 graylog 6.1
  • 观察|印巴交火开始升级,是否会演变为第四次印巴战争?
  • 金正恩视察重要军工企业要求推进武力强化变革
  • 印巴冲突升级,巴防长称已击落5架印度战机
  • 阿曼宣布美国与胡塞武装达成停火协议
  • 上海市委常委会扩大会议传达学习习近平总书记考察上海重要讲话和在部分省区市“十五五”时期经济社会发展座谈会上的重要讲话精神
  • 综合治理食品添加剂滥用问题,国务院食安办等六部门联合出手