POJ 1094 最短路算法
2012-10-11 17:43
155 查看
正确算法应该为拓扑算法
不过我用最短路也过了
不知道是不是数据太小的问题
以后在用拓扑算法把他过了
题目简单
就一拓扑顺序的题
不过我用最短路也过了
不知道是不是数据太小的问题
以后在用拓扑算法把他过了
题目简单
就一拓扑顺序的题
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define M 30 bool bnxt[M][M]; bool vis[M]; int g[M][M]; int n,m,to; int ans[M],a[M]; const int FINISH=1, FAIL=2, NOANSWER=3; void answer(int flag,int num) { if(flag==FINISH) { int i,j; printf("Sorted sequence determined after %d relations: ",num); for(i=n-1;i>=0;i--) { for(j=0;j<n;j++) { if(g[j][to]==i) { putchar('A'+j); } } } printf(".\n"); } else if(flag==FAIL) { printf("Inconsistency found after %d relations.\n",num); } else { printf("Sorted sequence cannot be determined.\n"); } } bool judge() { int i,j,k; bool allans=false; while(true) { bool bans=false; for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(k=0;k<n;k++) { if(g[i][j]&&g[j][k]&&g[i][k]<g[i][j]+g[j][k]) { bans=true; g[i][k]=g[i][j]+g[j][k]; bnxt[i][k]=true; if(g[i][k]==n-1) { to=k; allans=true; } } } } } if(!bans) { break; } } if(allans) { return true; } return false; } void read() { int i; char s[20]; memset(bnxt,0,sizeof(bnxt)); memset(g,0,sizeof(g)); int nans=NOANSWER,step=0; for(i=0;i<n;i++) { a[i]=1; } for(i=1;i<=m;i++) { scanf("%s",s); if(nans!=NOANSWER) { continue ; } int u=s[0]-'A'; int v=s[2]-'A'; bnxt[u][v]=true; if(bnxt[v][u]) { nans=FAIL; step=i; } else { g[u][v]=max(g[u][v],1); if(judge()) { nans=FINISH; step=i; } } } answer(nans,step); } int main() { while(~scanf("%d%d",&n,&m)) { if(n==0&&m==0) { break; } read(); } }
相关文章推荐
- POJ 1094 Sorting It All Out 拓扑排序
- 字符拓扑 POJ 1094
- poj 2367 & poj 1094 分析&解题报告(拓扑排序入门)
- POJ 1094 Sorting It All Out 拓扑排序
- poj 1094
- [ACM] POJ 1094 Sorting It All Out (拓扑排序)
- zoj 1060 || poj 1094 Sorting It All Out(拓扑排序)
- poj 1094 拓扑排序+邻接表
- POJ1094 / ZOJ1060
- POJ 1094 Sorting It All Out (拓扑排序) - from lanshui_Yang
- poj 1094 Sorting It All Out(拓扑排序 + 邻接表)
- POJ-1094 Sorting It All Out
- poj 1094
- poj 1094 全排序
- poj1094 Sorting It All Out (拓扑排序)
- poj 1094 拓扑排序
- poj1094----拓扑排序
- POJ1094解题报告
- POJ 1094 Sorting It All Out
- poj 1094 Sorting It All Out (拓扑排序)