1 条题解
-
0
C++ :
#include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; struct Edge{ int u, v; }edge[1003]; vector<int> Vec[1003]; int vis[1003]; int from, to; bool Go = false; void dfs(int n, int u) { vis[n] = 1; if(n == to)Go = true; if(Go == true)return; for(int i=0; i<Vec[n].size(); i++){ if((vis[Vec[n][i]] == 0) && (Vec[n][i] == to || Vec[n][i] != u)){//下一个点没被访问过和下一个点。。 dfs(Vec[n][i], u); vis[Vec[n][i]] = 0; } } } int main() { int i, j, n, m, u, v; int count; cin>> n >> m; for(i=1; i<=m; i++){ cin>> u >> v; Vec[u].push_back(v); Vec[v].push_back(u); } cin>> from >> to; count = 0; dfs(from, -1); if(Go == false){ cout<<"-1\n"; } else for(i=1; i<=m; i++){ Go = false; memset(vis, 0, sizeof(vis)); dfs(from, i); if(Go == false)count++; } cout<<count<<endl; return 0; }
Java :
import java.util.ArrayList; import java.util.Scanner; public class Main { public static ArrayList ff; public static int flag; public static int[] f; public static ArrayList c; public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { int n=sc.nextInt(); int m=sc.nextInt(); ArrayList<Integer>[] a=new ArrayList[n+1]; for(int i=0;i<n+1;i++) { a[i]=new ArrayList(); } f=new int[n+1]; ff=new ArrayList(); for(int i=0;i<m;i++) { int x=sc.nextInt(); int y=sc.nextInt(); a[x].add(y); a[y].add(x); } c=new ArrayList(); int s=0; int begin=sc.nextInt(); int end =sc.nextInt(); c.add(begin); f[begin]=1; fds(a,begin,end,-1); if(flag!=0) { c.clear(); for(int k=1;k<f.length;k++) { f[k]=0; } for(int i=0;i<ff.size();i++) { flag=0; fds(a,begin,end,(int) ff.get(i)); if(flag==0) { s++; } } }else { s=-1; } flag=0; ff.clear(); c.clear(); for(int k=1;k<f.length;k++) { f[k]=0; } System.out.println(s); } } public static void fds (ArrayList[] a,int d,int end,int p) { for(int i=0;i<a[d].size();i++) { if(f[(int)a[d].get(i)]==0&&(int)a[d].get(i)!=p) { if((int)a[d].get(i)==end) { if(p==-1) { for(int k=1;k<c.size();k++) { ff.add(c.get(k)); } } flag=2; return; } f[(int)a[d].get(i)]=1; int e=(int)a[d].get(i); c.add(a[d].get(i)); fds(a,e,end,p); f[(int)a[d].get(i)]=0; if(flag==2) { break; }c.remove(c.size()-1); } } } }
- 1
信息
- ID
- 1892
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者