ural 1072. Routing

水题啊,不过因为那个AND还百度了下,神马叫IP和子网掩码的按位与 = =。。其实就是IP和子网掩码的每个数字上用&与下,得到最终结果即可。

 

因为是按位与后结果相同的可以连线建图,我直接把按位与的结果存成一个数字了,得用long long,要不存不下。

 

然后直接和之前已经存过的结果对比,如果相等就建图。

 

然后就随意了,用dijkstra求最短路,输出路径即可。

 

#include #include #include #include #include using namespace std; const int MAX = 100; long long yu[MAX][6]; int map[MAX][MAX]; int len[MAX]; int a[MAX],n; bool check(int x,int y) { for(int i=0; i dis[now] + 1 ) { dis[k] = dis[now] + 1; pre[k] = now; } int mmin = INT_MAX; for(int k=1; k<=n; k++) if( !used[k] && dis[k] < mmin ) mmin = dis[now = k]; used[now] = 1; } if( dis[t] == INT_MAX ) { printf("No/n"); return ; } printf("Yes/n"); printf("%d",s); output(t); printf("/n"); } int main() { int t1[5],t2[5],s,t; scanf("%d",&n); memset(len,0,sizeof(len)); memset(yu,0,sizeof(yu)); memset(map,0,sizeof(map)); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); for(int k=0; k

你可能感兴趣的:(最短路径,差分约束,URAL)