UVA 10305 给任务排序

来源:互联网 发布:js的原型 编辑:程序博客网 时间:2024/05/16 05:12

为什么LRJ的拓扑排序写的UVA上通不过呢

思路1:dfs进行拓扑排序

思路2:按照定义逐个删除入度为0的顶点

参考:http://www.ackratos.com/blog/?p=358

#include<iostream>#include<fstream>#include <cstring>using namespace std;#ifndef ONLINE_JUDGEifstream fin("test.in");#else#define fin cin#endifconst int maxn=105;int graph[maxn][maxn];int notes[maxn];int n,m;intdegree(){for(int i=0;i<n;i++){if(notes[i]!=-1)//该顶点没被删除{int degree=0;for(int j=0;j<n;j++){if(graph[j][i]==1){degree=1;break;}}if(degree==0)return i;}}return -1;//没有找到入度为0的顶点了} intmain(){while(fin>>n>>m){memset(graph,0,sizeof(graph));memset(notes,0,sizeof(notes));if(n==0&&m==0)break;for(int i=0;i<n;i++)notes[i]=i+1;for(int i=0;i<m;i++){int x,y;fin>>x>>y;graph[x-1][y-1]=1;}int del;while((del=degree())!=-1){cout<<del+1<<" ";for(int i=0;i<n;i++)//删除以del为弧尾\弧头的弧{graph[del][i]=0;graph[i][del]=0;}notes[del]=-1;//从点集中删除该点}}return 0;}


 

原创粉丝点击