hdu 1869 枚举+Dijstra

一点小变形就是了。。】


#include<iostream> #include<cstdio> #define maxn 201 #define inf 999999
using namespace std; int n,m,mapp[maxn][maxn],dis[maxn],vis[maxn]; void init() { fill(dis,dis+n,inf); fill(vis,vis+n,0); } void dij(int s) { dis[s]=0; while(1) { int v=-1; for(int i=0;i<n;i++) if(!vis[i]&&(v==-1||dis[i]<dis[v])) v=i; if(v==-1) break;//如果 vis[v]=1; for(int i=0;i<n;i++) dis[i]=min(dis[i],dis[v]+mapp[v][i]); } } int main() { cin.sync_with_stdio(false); while(cin>>n>>m) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j) mapp[i][j]=0; else mapp[i][j]=inf; } } while(m--) { int a,b; cin>>a>>b; mapp[a][b]=mapp[b][a]=1; } int flag=0; for(int i=0;i<n;i++) { init(); if(flag) break; dij(i); for(int j=0;j<n;j++) if(dis[j]>=8) { flag=1; break; } } if(flag) cout<<"No"<<endl; else cout<<"Yes"<<endl; } return 0; }
posted @ 2016-08-24 20:26  猪突猛进!!!  阅读(151)  评论(0编辑  收藏  举报