• hdu 4948 Kingdom(推论)


    hdu 4948 Kingdom(推论)

    传送门

    题意:
    题目问从一个城市u到一个新的城市v的必要条件是存在
    以下两种路径之一
    u --> v
    u --> w -->v
    询问任意一种能够走完整个地图所有点的访问序列

    题解:
    首先这道题必然有解,因为题目的条件
    其次存在一个推论,对于每个子图而言,当前图入度最大的点距离每个点的距离不超过2,例如
    u-->w-->t-->v
    如果v是入度最大的点,必然存在一条u/w-->v的路径,往更长的路径进行推论也一样,因为结合上一个重要的条件(任意两点有一条路径),同样可以得到这个推论

    import java.io.*;
    import java.util.*;
    
    public class hdu_4948 {
    	static class MyInputStream extends InputStream {
    		public BufferedInputStream bis = new BufferedInputStream(System.in);
    
    		public int read() throws IOException {
    			int i;
    			while ((i = bis.read()) < 48)
    				if (i == -1)
    					return -1;
    			int temp = 0;
    			while (i > 47) {
    				temp = temp * 10 + i - 48;
    				i = bis.read();
    			}
    			return temp;
    		}
    	}
    
    	static final int N = 510;
    	static int in[] = new int[N];
    	static int vis[] = new int[N];
    	static int ans[] = new int[N];
    
    	public static void main(String[] args){
    		Scanner cin=new Scanner(new InputStreamReader(System.in));
    		while (true) {
    			int n = cin.nextInt();
    			if (n == 0)
    				break;
    			String st;
    			Arrays.fill(in, 0,n+1,0);
    			for (int i = 1; i <= n; i++) {
    				st=cin.next();
    				for (int j = 0; j < n; j++) {
    					if(st.charAt(j)=='1')
    					in[j+1]++;
    				}
    			}
    			Arrays.fill(vis, 0, n + 1, 0);
    			int mx, w, cnt = n;
    			for (int i = 1; i <= n; i++) {
    				mx = 0;
    				w = 0;
    				for (int j = 1; j <= n; j++) {
    					if (mx <= in[j] && vis[j] == 0) {
    						mx = in[j];
    						w = j;
    					}
    				}
    				ans[cnt--] = w;
    				vis[w] = 1;
    			}
    			StringBuilder str = new StringBuilder("");
    			for (int i = 1; i <= n; i++) {
    				if (i > 1)
    					str.append(" ");
    				str.append("" + ans[i]);
    			}
    			System.out.println(str);
    		}
    		cin.close();
    	}
    }
    
  • 相关阅读:
    [转]window.open居中
    WebService实例一
    开发步骤
    ubuntu命令
    ubuntu如何添加软件源
    WebService学习笔记
    android.view.WindowManager$BadTokenException: Unable to add window token null is not for an application
    Dialog的使用
    区分Activity的四种加载模式
    在android 中导入项目后 包出现错误
  • 原文地址:https://www.cnblogs.com/zsyacm666666/p/6795878.html
Copyright © 2020-2023  润新知