floyd求最短路判断图的联通性。
注意图是有向图。。。
#include<cstdio> #include<iostream> #include<cstring> using namespace std; struct node { int x,y,id; }edge[205]; int dis[205][205]; int main() { int c,T,n,a,b,op; while(scanf("%d",&T)!=EOF) { memset(dis,0,sizeof(dis)); memset(edge,0,sizeof(edge)); c = 1; for(int i=1;i<=T;i++) { scanf("%d%d%d",&op,&a,&b); if(op==1) { edge[c].x = a; edge[c].y = b; edge[c].id = c; for(int k=1;k<c;k++) { if((edge[k].x<a && a<edge[k].y) || (edge[k].x<b && b<edge[k].y)) dis[c][k]=1; if((a<edge[k].x && edge[k].x<b) || (a<edge[k].y && edge[k].y<b)) dis[k][c]=1; } c++; } else { if(dis[a][b]) printf("YES\n"); else { for(int x=1;x<c;x++) { for(int j=1;j<c;j++) { for(int l=1;l<c;l++) if(dis[j][x] && dis[x][l]) dis[j][l]=1; } } if(dis[a][b]) printf("YES\n"); else printf("NO\n"); } } } } return 0; }
wustoj 1318 区间的连通性 (最短路),码迷,mamicode.com
时间: 2024-11-10 13:19:45